Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字符串与数组中的双相等(Java)_Java_Arrays_String_Object_Equals - Fatal编程技术网

字符串与数组中的双相等(Java)

字符串与数组中的双相等(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字符串池-

考虑到字符串和数组都是对象,为什么代码段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字符串池-JVM存储字符串的特殊内存区域

由于Java中字符串的不变性,JVM可以进行优化 通过仅存储一个副本为其分配的内存量 池中的每个文本字符串。这个过程叫做实习

当我们创建一个字符串变量并为其赋值时,JVM 在池中搜索值相等的字符串

如果找到,Java编译器将简单地返回对其 内存地址,无需分配额外内存

如果没有找到,它将被添加到池(interned)及其引用中 将被退回


假设你说的是Java?@Timo,是的,我指的是Java。原因是字符串缓存。谢谢。所以,字符串是一个例外@user9249390不仅从缓存中提取
字符串
,甚至还从缓存中提取
整数
(只要值介于
-128
127
或类似值之间)。注意,我说的是对象
整数
,而不是原语
int