[英]Java- creating a String object but assigning otherwise afterwards
我有一个关于在 Java 中建立 String 对象的问题。
假设我创建了一个这样的 String 对象:
String mystring=new String();
现在,如果我使用这个 String 对象并为它分配一个像这样的字符串:
mystring="abc";
这里究竟发生了什么? mystring
是完全指向原始对象还是不同的对象? 像String mystring;
是String mystring=new String();
的简写String mystring=new String();
什么可以mystring="abc";
代表?
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
一个变量不会改变。 它引用的对象或引用本身可以改变。
像 String mystring; 是 String mystring=new String() 的短期;
没有String mystring;
是一个变量声明。 执行该行时,变量mystring
已声明但未初始化。
另一方面, String mystring = new String()
声明并初始化变量mystring
。
什么可以 mystring="abc"; 代表?
这是一个赋值表达式,将String
对象"abc"
的引用值赋值给变量mystring
。
理解字符串是不可变的也很重要。 一旦创建了String
对象,就无法更改它。 例如,在下面的代码中
String name = "user3133542"; // cool
name = "some other value";
您不是在更改name
引用的对象,而是在创建一个新对象并将其值分配给变量name
。
String
API 不提供任何更改其值的方法。 因此我们称它为不可变的。
考虑阅读Java String
教程。
另外,在您提出下一个问题之前,请阅读此内容
您正在使用mystring="abc";
更改mystring
它完全不是原始对象。 mystring
是一个变量而不是对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.