首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

不求包养但求解析?该如何处理

2012-04-15 
不求包养但求解析???????????不知道那位高手能够把解析一下下面为什么打印的结果不同。小弟不才,先谢谢大家

不求包养但求解析???????????
不知道那位高手能够把解析一下下面为什么打印的结果不同。小弟不才,先谢谢大家先!!

  public static void main(String[] args){
String a="a";
String b =a+"b";
System.out.println(b=="ab");//false
String c ="a"+"b";
System.out.println(b=="ab");//true
}

[解决办法]
两个都是false ==比较的是地址 equals()比较的是内容
[解决办法]
我先吐槽下,楼主莫见怪:这个不算周经,也要算月经了。

String c ="a" + "b";
编译时就会被当作 "ab" 处理,而:

String b =a+"b";
编译时javac可猜不出a是个啥。

结合String采用了享元技术,所以如此。

楼主可以翻翻老帖子,也可以Google下。又不理解再探讨。
[解决办法]
第二个输出应该是c=="ab"吧?
[解决办法]
String a="a";
String b =a+"b";//因为有变量引入,在运行时,会创建一个新的字符串对象,所以此时 b=="ab" 不等
而 String c ="a"+"b";//常量字符串相连接 编译器直接优化成"ab"
所以此时 c=="ab" (楼主上面写的是 b=="ab,我觉得是不是写错了)
[解决办法]
楼主那个c 好像没用上 是不是c=="ab"?

热点排行