java笔记

只作为个人笔记

StringBuilder类与string类的区别

String本身是不可改变的,它只能赋值一次,每一次内容发生改变,都会生成一个新的对象,然后原有的对象引用新的对象,而每一次生成新对象都会对系统性能产生影响,这会降低.NET编译器的工作效率。string操作示意图如图1所示

image

而StringBuilder类则不同,每次操作都是对自身对象进行操作,而不是生成新的对象,其所占空间会随着内容的增加而扩充,这样,在做大量的修改操作时,不会因生成大量匿名对象而影响系统性能。StringBuilder操作示意图如图2所示。

image

当程序中需要大量的对某个字符串进行操作时,应该考虑应用StringBuilder类处理该字符串,其设计目的就是针对大量string操作的一种改进办法,避免产生太多的临时对象;而当程序中只是对某个字符串进行一次或几次操作时,采用string类即可。

二叉树后序遍历的几种思路

//递归   
public void dfs(TreeNode root, List<Integer> list){
        if(root.left != null)dfs(root.left, list);
        if(root.right != null)dfs(root.right, list);
        list.add(root.val);
    }
//先序遍历的反转即得到后序遍历
 public void dfs(TreeNode root, List<Integer> list){
        Stack<TreeNode> stack = new Stack<>();
        stack.push(root);
        TreeNode node;
        while (!stack.empty()){
            node = stack.pop();
            list.add(node.val);
            if(node.left != null)stack.push(node.left);
            if(node.right != null) stack.push(node.right);
        }
        Collections.reverse(list);//list的反转、
    }

Java中字符串比较,三种方式的区别

三种方式分别是:compareTo、“==”、equals
1.compareTo比较字符串中 字符 的大小:
比较两个字符串,并返回一个int类型。若字符串等于参数字符串、则返回0,字符串小于参数字符串、则返回值小于0,字符串大于参数字符串、返回值大于0。

package com.de.test;

/**
 * Java字符串比较大小
 */
public class StringA {
    public static void main(String[] args){
        String str = "String";
        String anotherStr = "string";
        Object objstr = str;
        System.out.println(str.compareTo(anotherStr));
        System.out.println(str.compareToIgnoreCase(anotherStr));
        System.out.println(str.compareTo(objstr.toString()));
    }
}
//返回结果:
-32
0
0
  1. equals(),“==”
    使用equals()和==,区别在于equals比较的是内容是否相等、==比较的是引用的变量地址是否相等。
package com.de.test;

public class StringA {
    public static void main(String[] args){
        String s1 = "hello";
        String s2 = "hello";
        String s3 = new String("hello");
        String s4 = new String("hello");
        System.out.println("s1:" + s1);
        System.out.println("s2:" + s2);
        System.out.println("s3:" + s3);
        System.out.println("s4:" + s4);
        System.out.println("----------比较内容是否相等---------------");
        System.out.println(s1.equals(s2));
        System.out.println(s2.equals(s3));
        System.out.println(s3.equals(s4));
        System.out.println("----------比较引用地址是否相等---------------");
        System.out.println(s1 == s2);
        System.out.println(s2 == s3);
        System.out.println(s3 == s4);
    }
}
//结果:
s1:hello
s2:hello
s3:hello
s4:hello
----------比较内容是否相等---------------
true
true
true
----------比较引用地址是否相等---------------
true
false
false
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 10.01_面向对象(package关键字的概述及作用)(了解) A:为什么要有包将字节码(.class)进行分类...
    冰川_阅读 3,688评论 0 1
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 5,386评论 0 3
  • JAVA 来源: sun公司,oracle收购 版本情况: 1.0 ....1.5(5.0)....8.0(1.8...
    AAnna珠阅读 3,567评论 0 1
  • 字符串相关类(String/StringBuilder /StringBuffer) String类 String...
    全栈JAVA笔记阅读 3,638评论 2 2
  • 本笔记来自 计算机程序的思维逻辑 系列文章 整数 不同类型的大小 二进制表示 最左边一位是符号位,0 表示正数,1...
    码匠阅读 2,224评论 0 5