A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杜鹏云 中级黑马   /  2012-8-9 12:07  /  1228 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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这是知道的                  

2 个回复

正序浏览
焦晨光 发表于 2012-8-9 12:20
这个超级简单:
String a="length: 10";
String c="length: "+pig.length();

明白了。。。
回复 使用道具 举报
这个超级简单:
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
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马