String str=new String("abc")创建对象详解
String str = new String("123")创建了几个对象
String str=new String("abc"); 创建了2个String对象:可以把上面这行代码分成String str、=、"123"和new String()四部分来看待。String str只是定义了一个名为str的String类型的变量,
因此它并没有创建对象;=是对变量str进行初始化,将某个对象的引用(或者叫句柄)赋值给它,显然也没有创建对象;现在只剩下new String("123")了。
那么,new String("123")看成"123"和new String():
String s1 = "123"; String s2 = new String("123"); s1.equal(s2)的结果
s1.equal(s2) 结果: true 123地址是固定的 只有一个对象
s1==s2 结果: false s2和123是两个对象 s2指向123
equal 是判断字符串相等的 Java会确保一个字符串常量只有一个拷贝, 这个对于String简单来说就是比较两字符串的Unicode序列是否相当,如果相等返回true;
==是比较两字符串的地址是否相同,也就是是否是同一个字符串的引用。
JAVA/288.html">http://www.itemperor.com/a/JAVA/288.html
原文链接:http://www.jxszl.com/biancheng/JAVA/446640.html