读书人

String 型对象有关问题

发布时间: 2012-10-30 16:13:35 作者: rapoo

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、==比较对象的概念。用它比较对象时,永远只比较对象的地址。

读书人网 >其他相关

热点推荐