String a = "abc";
String c = new String("abc");
String d = c.intern();
Scanner s = new Scanner(System.in); //键盘输入abc
String e = s.next();
System.out.println(a == d); //这个是true
System.out.println(a == e); //这个是false
}
---------------
为什么第一个是true ,第二个是false?
String c = new String("abc");
String d = c.intern();
Scanner s = new Scanner(System.in); //键盘输入abc
String e = s.next();
System.out.println(a == d); //这个是true
System.out.println(a == e); //这个是false
}
---------------
为什么第一个是true ,第二个是false?
第2个就是一般情况,不用说都是false的了
看看这个
==比较的不仅是值,也比较地址,所以a == e 是false
1.String s="ABC";
将s引用一个已经存在的"ABC"对象,这个"ABC"是个字面值,在程序中无论有多少"ABC",它们都是同一个对象
2.String s=new String("ABC");
将s引用一个新建的String对象,然后将"ABC"对象的值copy一份传入到这个新建的String对象中一般情况下我们创建String都是通过第一种方式直接引用已存在的对象
而String的构造方法主要是用于将字符/字节数组转换为String任何试图对String的修改操作都会导致产生一个新的String对象,而原对象永远不会被改变