Java String对象引用

时间:2017-12-04 20:08:08

标签: java object reference

我想澄清一些关于java对象的疑问,我有这段代码:

public class Strut
{
    public static void main(String[] args)
    {
        String s=new String("wooo!");
        String t=s;
        System.out.println(s+","+t);
        t="blaaaah";
        System.out.println(s+","+t);
    }
}

如果我得到了正确的对象总是在堆上分配,因为java没有按设计在堆栈上分配对象。 所以变量s和t只是引用我写的代码中的同一个对象? 因此,当我第一次打印s和t时,我期待相同的结果,这很好。 但是在我修改了t并再次打印字符串之后它们是不同的, 不应该成为blaaaah,因为t和s是对同一个对象的引用? 感谢

1 个答案:

答案 0 :(得分:-1)

这可以用一个短语来回答:字符串是不可变的 所以,是的,每次使用引号时,你实际上是在创建一个新的String对象。这就是为什么而不是做:

String s=new String("wooo!");

你可以这样做:

String s = "wooo!";

它会是一样的。
PS.:Immutable意味着每个String对象将具有相同的值,直到它被销毁,如果String refference改变了值,您可以确定它正在引用另一个对象。