字符串与数组中的双相等(Java)
考虑到字符串和数组都是对象,为什么代码段1的计算结果为true,而代码段2的打印结果为false字符串与数组中的双相等(Java),java,arrays,string,object,equals,Java,Arrays,String,Object,Equals,考虑到字符串和数组都是对象,为什么代码段1的计算结果为true,而代码段2的打印结果为false String s1 = "abc"; String s2 = "abc"; System.out.println (s1 == s2); 代码段2: int [] arr = {0,1,2}; int [] arr2 = {0,1,2}; System.out.println (arr == arr2); 提前谢谢 它们都是对象,但是Java在有意义的地方重用字符串对象 […]Java字符串池-
String s1 = "abc";
String s2 = "abc";
System.out.println (s1 == s2);
代码段2:
int [] arr = {0,1,2};
int [] arr2 = {0,1,2};
System.out.println (arr == arr2);
提前谢谢 它们都是对象,但是Java在有意义的地方重用字符串对象 […]Java字符串池-JVM存储字符串的特殊内存区域 由于Java中字符串的不变性,JVM可以进行优化 通过仅存储一个副本为其分配的内存量 池中的每个文本字符串。这个过程叫做实习 当我们创建一个字符串变量并为其赋值时,JVM 在池中搜索值相等的字符串 如果找到,Java编译器将简单地返回对其 内存地址,无需分配额外内存 如果没有找到,它将被添加到池(interned)及其引用中 将被退回
假设你说的是Java?@Timo,是的,我指的是Java。原因是字符串缓存。谢谢。所以,字符串是一个例外@user9249390不仅从缓存中提取
字符串
,甚至还从缓存中提取整数
(只要值介于-128
和127
或类似值之间)。注意,我说的是对象整数
,而不是原语int
。