请问一个基本的字符串赋值有关问题
请教一个基本的字符串赋值问题如下代码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的缓存池中查找是否已有此对象
[解决办法][解决办法] 在java里面,由于String被大量的使用,所以对它在内存有一个专门的String Pool,对于用
String str1 = "abc";
这种,会先在栈中建立一个String类型的引用,然后到池中查找是否有“abc”,如果存在,之间将之
前的引用指向该对象,如果不存在,创建一个“abc”放到池中,之后再将引用指向它。所以在你的示例
中
Java code String str1 = "ABC"; String str2 = "ABC";