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

有点小意外,该怎么处理

2012-01-26 
有点小意外public class equalsTest {private void methodTest(){String A abcString B abcif(A

有点小意外
public class equalsTest {

private void methodTest(){
String A = "abc";
String B = "abc";
if(A==B){
System.out.println("A和B地址一样");
}


public static void main(String[] args) {
// TODO Auto-generated method stub
new equalsTest().methodTest();
}

}
结果打印出“A和B地址一样”。。。。。。是怎么回事呢?

[解决办法]
A和B都是用字符串常量复制的,字符串常量的值在编译的时候 值就可以确定,因此在字符串常量池当中只维护一个字符串对象“abc”,然后A B都引用到“abc”

如果是String a="abc"; String b=new String("abc") 就不一样了
[解决办法]
String A = "abc"时创建常量"abc",String B = "abc"时先到常量池中检测发现有常量abc,所以不会重新创建,B直接指向A的地址。。

热点排行
Bad Request.