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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© TS__likewise 中级黑马   /  2014-6-25 20:05  /  1047 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String s = null的时候,输出的结果是false;而我将String s = "";的时候,返回的又是true;这是怎么回事啊!
请详细解释!                  

String s = "";
  String t = "ab";
  
  s = s + t;
  
  if(s.equals(t))
  {
   System.out.println("true");
  }
  else
  {
   System.out.println("false");
  }

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

5 个回复

倒序浏览
你为什么不输出一下s看看,当s = null时,s = s+t;的结果为nullab;
回复 使用道具 举报
当String s=“”时,Java程序在堆中给其开辟了内存空间,只不过里面没有存任何数据,而String t=a +b开辟的是方法区,当两者相加时就相当于默认把,方法区的内容赋值进堆内存,所以s的内容和t相同
而当String s=null时,Java程序没有为s开辟内存空间,而他和t相加,相当于一个空指针和一个t指针相加,结果输出的是两个指针,nullab,而t指向的只是ab的地址,所以两者内容不同;

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 彭飞 于 2014-6-26 10:27 编辑

不是肿么回事的问题,
是 ""  和null的问题,如果对下面的代码不l理解,请。。。。

  1.         public static void main(String[]args){
  2.                 String s1 = null;
  3.                 String s2 = "";
  4.                 System.out.println(s2+"---"+s1);
  5.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
彭飞 发表于 2014-6-25 23:48
不是肿么回事的问题,
是 ""  和null的问题,如果对下面的代码不接接,请。。。。

学习了··
回复 使用道具 举报
String是软肋啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马