public static void main(String [] args){
String s = "java"; //line 1
s.concat(" SE 6"); //line 2
s.toLowerCase(); //line 3
System.out.print(s); //line 4
}
这个问题的答案是“4”。我认为这将是“3”。我的困惑是第3行,它再次创建“java”字符串,但不知道字符串常量池中已经存在“java”字符串,为什么再次创建它?创建多少个Java字符串?
字符串在Java中是不可变的,所以's.toLowerCase()'返回一个新的String对象。 – Ocracoke 2015-02-24 16:14:22
@Ocracoke - 没有。他不会重新分配由'concat'返回的值,所以s将是“java”,然后是“java”,toLowerCase()'将返回相同的字符串“java” – TheLostMind 2015-02-24 16:23:31
@TheLostMind啊,只是看着代码对于'toLowerCase()'来说,当它发现什么都不做时,就会看到'return this'这行。我的错。 – Ocracoke 2015-02-24 16:37:09