我有一个关于在Java中建立String对象的问题。
假设我创建了一个这样的String对象:
String mystring=new String();
现在,如果我接受这个String对象并为其分配一个这样的字符串:
mystring="abc";
这到底发生了什么? mystring
是否与原始对象完全对应,还是不同的对象?与String mystring;
一样,String mystring=new String();
是mystring="abc";
代表什么的简称?
答案 0 :(得分:3)
String mystring = new String();
创建一个新的String
对象,并将其引用值赋给变量mystring
。
所以
Variable Heap
-------- ----
mytring ---------------------> "" // an empty String object
然后你做
mystring="abc";
这会将String
对象"abc"
的引用值分配给变量mystring
。所以
Variable Heap
-------- ----
mystring -------------------> "abc"
"" // will be garbage collected at some point
变量不会改变。它引用的对象或引用本身可以改变。
Like String mystring;是String mystring = new的短期内容 串();
否String mystring;
是变量声明。执行该行时,声明变量mystring
但未初始化。
另一方面,String mystring = new String()
声明并初始化变量mystring
。
什么可以mystring =“abc”;代表什么?
这是一个赋值表达式,将String
对象"abc"
的引用值赋给变量mystring
。
理解字符串是不可变的也很重要。创建String
对象后,无法更改它。例如,在以下代码中
String name = "user3133542"; // cool
name = "some other value";
您没有更改name
引用的对象,您正在创建一个新对象并将其值赋给变量name
。
The String
API does not provide any methods to change its value.因此我们将其称为不可变。
考虑浏览Java String
tutorial。
此外,在您提出下一个问题之前,请先阅读
答案 1 :(得分:0)
您正在使用mystring
更改mystring="abc";
这与原始对象完全不同。 mystring
是一个不是对象的变量。