jav*_*vah 2 java string long-integer
为什么这两个整数
Long num = new Long(21);
long num2 = 21;
Run Code Online (Sandbox Code Playgroud)
比较时返回true(num == num2)
但是这个字符串
String word1 = "Hello";
String word2 = new String("Hello");
Run Code Online (Sandbox Code Playgroud)
比较时返回false(word1 == word2)?
在第一种情况下,您将Long引用与long基本类型进行比较,在这种情况下Long引用进行自动拆箱转换,并且比较在两个原始long之间完成,因此它们是相等的.这符合JLS§5.6.2 - 二进制数字促销.
在第二种情况下,您正在比较两个不同的引用,它们都指向两个不同的对象,因此它们具有不同的值,并返回false.