黑马程序员技术交流社区
标题:
string小疑问
[打印本页]
作者:
杜鹏云
时间:
2012-8-9 12:07
标题:
string小疑问
String a="length: 10";
String b="length: "+10;
String c="length: "+pig.length();
System.out.println(pig==dog);
System.out.println(pig==duk);
为什么 a==c是false
a==b是true这是知道的
作者:
焦晨光
时间:
2012-8-9 12:20
这个超级简单:
String a="length: 10";
String c="length: "+pig.length();
a指向的是一个字符串常量,在编译期就被确定下来,所以a指向常量池中的字符串"length: 10"
c变量的引用并不能在编译期就确定下来值,所以"length: "+pig.length()的值并不存在于常量池中
"length: "+pig.length()和"length: 10"前面存在于堆中 后面 存在于常量池中 地址不一样
故a==c false
作者:
杜鹏云
时间:
2012-8-9 12:21
焦晨光 发表于 2012-8-9 12:20
这个超级简单:
String a="length: 10";
String c="length: "+pig.length();
明白了。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2