黑马程序员技术交流社区
标题:
关于String的地址
[打印本页]
作者:
Qiubang
时间:
2016-1-29 23:04
标题:
关于String的地址
System.out.println("张三"=="张三");//true
String s1="张三"; String s2="张三";
System.out.println(s1==s2);//true
System.out.println(s1=="张三");//true
为什么都是true,这是巧合?
作者:
洋葱头头
时间:
2016-1-30 09:03
有个常量池吗 张三就一个 所以地址都一样喽
作者:
j6819236
时间:
2016-1-30 10:34
String s="张三";//这种等于在常量池创建了"张三",s地址指向"张三"这个常量地址,你再以这种String ss="张三",
ss还是指向常量池中"张三"的地址.
如果你以下面这种形式创建等于在堆内存创建对象,而且每new 出一个新对象,就会创建一个新地址的新对象。"=="符号判断机制是 基本数据比较值,引用数据类型比较地址.
String s1=new String("张三");
String s2=new String("张三");
System.out.println(s1==s2);
复制代码
作者:
justinhsj
时间:
2016-1-30 13:08
执行String s1="张三"; 在常量池创建了"张三",地址赋给s1.
执行String s2="张三"; 因为常量池中已经有了"张三,直接地址赋给s2.
执行System.out.println(s1==s2);就是true
作者:
毕秋
时间:
2016-1-30 18:59
“張三”存在於常 量池中,當String數據類型的兩個引用指向了同一個對象時,地址都是一樣的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2