Java-创建字符串对象,但随后分配其他对象
我有一个关于在Java中建立字符串对象的问题 假设我创建了一个字符串对象,如下所示:Java-创建字符串对象,但随后分配其他对象,java,Java,我有一个关于在Java中建立字符串对象的问题 假设我创建了一个字符串对象,如下所示: String mystring=new String(); mystring="abc"; 现在,如果我拿这个字符串对象,给它分配一个字符串,如下所示: String mystring=new String(); mystring="abc"; 这里到底发生了什么?mystring是精确地指向原始对象还是另一个对象?比如stringmystring是String mystring=new String(
String mystring=new String();
mystring="abc";
现在,如果我拿这个字符串对象,给它分配一个字符串,如下所示:
String mystring=new String();
mystring="abc";
这里到底发生了什么?mystring
是精确地指向原始对象还是另一个对象?比如stringmystring
是String mystring=new String()的缩写代码>什么可以mystring=“abc”代码>代表什么
String mystring = new String();
创建一个新的String
对象,并将其引用的值分配给变量mystring
所以
那你呢
mystring="abc";
这将字符串
对象的引用值“abc”
分配给变量mystring
。所以
Variable Heap
-------- ----
mystring -------------------> "abc"
"" // will be garbage collected at some point
变量不会改变。它所引用的对象或引用本身可以更改
就像我的弦;是字符串mystring=new的短期值
字符串()
没有字符串mystring代码>是一个变量声明。当执行该行时,变量mystring
被声明但未初始化
另一方面,String mystring=new String()
声明并初始化变量mystring
mystring=“abc”可以做什么;代表什么
String mystring = new String();
这是一个赋值表达式,它将字符串的引用值对象“abc”
赋值给变量mystring
理解字符串是不可变的也很重要。一旦创建了字符串
对象,就无法对其进行更改。例如,在下面的代码中
String name = "user3133542"; // cool
name = "some other value";
您没有更改name
引用的对象,而是创建一个新对象并将其值分配给变量name
因此,我们称之为不可变的
考虑一下通过考试
另外,在你问下一个问题之前,请阅读以下内容
您正在使用mystring=“abc”更改mystring
代码>它与原始对象完全不同。mystring
是一个变量而不是对象 在Javastringmystring中
不是String mystring=new String()的短期术语代码>。它只是一个没有任何赋值的变量声明,甚至不是null
。除了为它赋值之外,你不能对这样的东西做任何事情。你能指出字符串是不可变的,更改mystring的值将创建一个新对象吗?谢谢!你帮了我很大的忙!