Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.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_String - Fatal编程技术网

为什么使用+;允许移动到java中的新地址?

为什么使用+;允许移动到java中的新地址?,java,string,Java,String,我得到了一些信息,使用+进行字符串加法可以在java中移动到新的内存地址,但在int的情况下不会发生,为什么 意味着 String a="fi-rstname"; a=a+" "+lastname; +“”+lastname将移动到新地址,而不是 要不是 int a=22; a=a+2323; a+2323;vale没有移动到新地址进行添加为什么?字符串在Java中是不可变的。初始化后不能更改不可变字段的内容。这就是为什么要创建一个新的内存盒 您可以在这篇文章中获得更多信息:这很好地解释了

我得到了一些信息,使用+进行字符串加法可以在java中移动到新的内存地址,但在int的情况下不会发生,为什么

意味着

String a="fi-rstname";
a=a+" "+lastname;
+“”+lastname将移动到新地址,而不是

要不是

 int a=22;
a=a+2323;

a+2323;vale没有移动到新地址进行添加为什么?

字符串在Java中是不可变的。初始化后不能更改不可变字段的内容。这就是为什么要创建一个新的内存盒


您可以在这篇文章中获得更多信息:这很好地解释了为什么字符串是不可变的。

因为字符串是不可变的,所以每次更改字符串时,它都会创建新对象。


在int中,我们可以进行更改,因为原语数据类型是可变的。

字符串在Java中是不可变的
int
s是原语。它们的值不存储在内存地址(也称为堆)中。此外,它不是字符串“加法”,而是字符串串联。