0

我尝试将两个字符串与.equals()method 以及 equals进行比较sign(==)。但有时,他们俩都会给出相同的答案。我该如何解决这个问题?

4

1 回答 1

4

关于实习字符串,基本上有两件事需要了解:

  • 从编译时常量加载的字符串是 intern 的。
  • intern()当您调用该方法时,字符串会被保留。

不过,有几个更好的点:

  • 编译时常量字符串的连接也是一个编译时常量,例如结果"foo"+"bar"是(内部)常量 String "foobar"
  • intern()方法实习一个副本,它返回。原始字符串不会添加到“interned string pool”中。
  • 不能对内部字符串进行垃圾收集。如果您实习的字符串实际上并没有使用,那么您就是在泄漏内存。
于 2013-06-21T19:13:13.473 回答