黑马程序员技术交流社区

标题: 有关String的小问题 [打印本页]

作者: TS__likewise    时间: 2014-6-25 20:05
标题: 有关String的小问题
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");
  }
作者: yuZhe_toString    时间: 2014-6-25 20:20
你为什么不输出一下s看看,当s = null时,s = s+t;的结果为nullab;
作者: 千曲生    时间: 2014-6-25 23:37
当String s=“”时,Java程序在堆中给其开辟了内存空间,只不过里面没有存任何数据,而String t=a +b开辟的是方法区,当两者相加时就相当于默认把,方法区的内容赋值进堆内存,所以s的内容和t相同
而当String s=null时,Java程序没有为s开辟内存空间,而他和t相加,相当于一个空指针和一个t指针相加,结果输出的是两个指针,nullab,而t指向的只是ab的地址,所以两者内容不同;
作者: 彭飞    时间: 2014-6-25 23:48
本帖最后由 彭飞 于 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.         }
复制代码

作者: lindegen    时间: 2014-6-26 01:13
彭飞 发表于 2014-6-25 23:48
不是肿么回事的问题,
是 ""  和null的问题,如果对下面的代码不接接,请。。。。

学习了··
作者: alive    时间: 2014-6-26 08:21
String是软肋啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2