Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-创建字符串对象,但随后分配其他对象_Java - Fatal编程技术网

Java-创建字符串对象,但随后分配其他对象

Java-创建字符串对象,但随后分配其他对象,java,Java,我有一个关于在Java中建立字符串对象的问题 假设我创建了一个字符串对象,如下所示: String mystring=new String(); mystring="abc"; 现在,如果我拿这个字符串对象,给它分配一个字符串,如下所示: String mystring=new String(); mystring="abc"; 这里到底发生了什么?mystring是精确地指向原始对象还是另一个对象?比如stringmystring是String mystring=new String(

我有一个关于在Java中建立字符串对象的问题

假设我创建了一个字符串对象,如下所示:

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
是一个变量而不是对象

在Java
stringmystring中
不是
String mystring=new String()的短期术语。它只是一个没有任何赋值的变量声明,甚至不是
null
。除了为它赋值之外,你不能对这样的东西做任何事情。你能指出字符串是不可变的,更改mystring的值将创建一个新对象吗?谢谢!你帮了我很大的忙!