字符串对象实例

use*_*690 1 java

可能重复:
基本Java问题:字符串相等

特定

String s= "God";
String k= "God";
Run Code Online (Sandbox Code Playgroud)

都将sk被认为是指同一个String对象吗?是否有一个String对象实例?

Per*_*son 5

是的,Java应该优化它以便s == k节省内存.(引用s和k引用同一个对象).

由于java没有指针,你不能改变s或k指向的字符串,但你当然可以改变s或k指向的字符串.如果java允许指针,那么对s指向的改变,以及上面的优化将产生不良后果.

这就是为什么不应该使用像"LOCK"这样的字符串来锁定线程的原因,因为如果第三方jar文件做同样的事情,你将在不知不觉中使用相同的对象作为线程锁,这可能会产生非常奇怪的和难以发现的错误.