【JAVA】String对象的特点

String对象的特点

mian中两种方法构造string:

public class String_class {
    public static void main(String[] args) {
        //使用构造方法的方式得到对象
        char[] chs = {'a', 'b', 'c'};
        String s1 = new String(chs);
        String s2 = new String(chs);
        System.out.println(s1 == s2);

        //直接赋值的方式得到对象
        String s3 = "abc";
        String s4 = "abc";
        System.out.println(s3 == s4);
        //比较字符串对象地址是否相同
        System.out.println(s1 == s3);
    }
}

显示结果:

false
true
false

构造方法: s1、s2分别new一个string对象的同时会在堆内存中申请一个属于自己自己的地址空间,而“ == ”对于 引用类型 等同于object类中的equals方法比较的是s1、s2是不是属于同一个对象,所谓同一个对象指的是内存中的同一块存储空间。所以在第一个输出语句是false
另外: 如果在String中只想对比两个字符串的内容是否相同,不关心是否属于一个地址空间,可以直接调用String中的equals()方法

直接赋值: s3、s4中的s3在堆内存中会有一个地址空间,不过这个地址空间是属于常量池中的,当s4进行赋值时会在常量池中发现一样的元素,直接将其地址指向s4。所以s3和s4对象在内存中是属于同一块存储空间的。第二个输出语句的是true

同理: 在第三个输出中也是false

猜你喜欢

转载自blog.csdn.net/joker_Ling/article/details/107723133
今日推荐