字符串更改的长度和保存长度不变的int

use*_*017 1 java string

我在这里有一个问题:

String s1="9578";
String s2="434";        
int len1=s1.length();
int len2=s2.length();
System.out.println(len1);
System.out.println(len2);
String temp;
temp=s1;
s1=s2;
s2=temp; 
System.out.println("after swaping: ");
System.out.println(len1);
System.out.println(len2);
Run Code Online (Sandbox Code Playgroud)

打印出来的将是:

4
3
after swaping: 
4
3
Run Code Online (Sandbox Code Playgroud)

值的变化len1len2不变.len1应该指向s1并且len2应该指向s2.他们为什么不改变?

Mur*_*nik 5

一旦为某个int(或任何其他原始数据类型)分配了一个值,就会"忘记"它来自哪里.一旦分配了值,它将退出"s1的长度",并且仅为4.不多也不少.

如果你想连续引用它的长度s1,只需s1.length()在需要时随时调用,而不是将其存储在另一个变量中.