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

String 型对象有关问题

2012-10-30 
String 型对象问题String a ab String b a + b System.out.println((a b))大家来判断最后

String 型对象问题
String a = "ab";
String b = "a" + "b";
System.out.println((a == b));
大家来判断最后一行的执行结果,并说明理由!String a = "ab"; String b = "a" + "b"; System.out.println((a == b));
大家来判断最后一行的执行结果,并说明理由!
自己现在终于找到了答案。
String a = "ab";//这句代码在执行后,在string 池中创建了对象ab,而a则是指向这个对象的地址
当执行String b = "a" + "b"; 这条语句时,由于=号的右边都是常量字符串,所以在创建时将在String池中找构成后的对象ab("a" + "b"=>"ab"),这是发现对象池中有这个对象,这样就直接返回池中的对象地址给b,而不在堆中重新创建对象。
这里假如改一下:

String x = "b";String a = "ab"; String b = "a" + x; System.out.println((a == b));

这时候的输出就为false;
这里要注意的几点是:
1、String池的概念
2、==比较对象的概念。用它比较对象时,永远只比较对象的地址。

热点排行