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

请问一个基本的字符串赋值有关问题

2012-01-02 
请教一个基本的字符串赋值问题如下代码Java codepublic static void main(String[] args) {String str1A

请教一个基本的字符串赋值问题
如下代码

Java code
    public static void main(String[] args) {        String str1="ABC";        String str2="ABC";        String str3=new String("ABC");        System.out.println(str1==str2);        System.out.println(str3==str1);    }

输出
1: true
2: false
第二行结果是显而易见的
但为什么第一行是true啊,想请教一下字符串赋值的内部实现具体是怎样的

[解决办法]
这是一个很经典的问题,new 出来一定是新的, 但是赋值则会先到string的缓存池中查找是否已有此对象
[解决办法]
探讨
这是一个很经典的问题,new 出来一定是新的, 但是赋值则会先到string的缓存池中查找是否已有此对象

[解决办法]
在java里面,由于String被大量的使用,所以对它在内存有一个专门的String Pool,对于用
String str1 = "abc";
这种,会先在栈中建立一个String类型的引用,然后到池中查找是否有“abc”,如果存在,之间将之
前的引用指向该对象,如果不存在,创建一个“abc”放到池中,之后再将引用指向它。所以在你的示例
Java code
             String str1 = "ABC";             String str2 = "ABC"; 

热点排行