Javadoc说如果在字符串池中有一个相等的String,那么intern()方法将返回String。
public class Demo {
public static void main(String[] args) {
String str1 = "Apple";
String str2 = new String("Apple");
System.out.println(str1.intern() == str2); //false
System.out.println(str1 == str2.intern()); //true
}
}
我希望在这两种情况下都能成真。
答案 0 :(得分:2)
System.out.println(str1.intern() == str2); //false
在上面的例子中,您将比较实习字符串"Apple"
的引用与堆上另一个字符串的引用(但具有相同值)。因此,结果是" false"。
System.out.println(str1 == str2.intern()); //true
在上面的例子中,您将String常量池的引用与尝试添加的引用进行比较" Apple"到String常量池。 SInce," Apple"已经在第一行,这个实习将返回str1指向的对象。因此,你会成真。
PS:javadoc
中描述了此行为答案 1 :(得分:0)
这样做#create an empty list to put numbers in
a = []
#open file and read the lines
with open("SO_sumofnumers.txt", "r") as f:
lines = f.readlines()
for line in lines:
#split each line by the separator (",")
l = line.split(",")
for entry in l:
# append each entry
# removing line-end ("\n") where necessary
a.append(int(entry.split("\n")[0]))
print a
#sum the elements of a list
s = sum(a)
print s
给你的尝试带来了什么......
由于str1.intern()
是一个文字字符串(它将被放置在字符串池中),并且您将它与在堆上分配的str1
进行比较...
因此
str2
将打印System.out.println(str1.intern() == str2);
,您正在比较搅拌池中字符串与堆上字符串的引用...
答案 2 :(得分:0)
String.intern()
方法用于在heap
常量池中创建String
String
对象的精确副本。 String objects
常量池中的String
会自动实现,但String
中的heap
个对象不会
System.out.println(firstString.intern() == secondString);//false because it will fetch exact copy of the string compare in string
System.out.println(firstString == secondString.intern());//True because it will compare firstString with fetch the second String it will check heap or not