黑马程序员技术交流社区

标题: 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