String数值不可改变怎么理解

想了很久没想明白,不可改变是什么不可改变
public class SHISHI {

/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
String str = "diyici";
System.out.println(str);
str = "dierci";
System.out.println(str);

}

}
我把str的值改变了怎么也行?

1、string数值不可改变的意思是字符串变量不能进行数学运算。

2、string是字符串变量,字符串变量里面存储的是字符串,存储的数值也是以字符串形式存在,所以不能进行数学运算,只能进行相应字符串操作,如连接、删除、查找等。

3、注意:vb6在某些情况下数值串与数值存在自动转换关系。

4、vb6示例:

Private Sub Form_Click()
Dim N1 As String, N2 As String, N3 As String
N1 = 123
N2 = 456
N3 = N1 + N2
Debug.Print N3

End Sub

'得到123456

温馨提示:内容为网友见解,仅供参考
第1个回答  2008-09-28
String str = "diyici"; 这个语句开辟了一个内存空间存储"diyici".
str = "dierci"; 当执行这个的时候,不是把"diyici"改成"dierci",而是又开辟了一个内存来存储,以前那个就成为垃圾内存了。
第2个回答  推荐于2017-09-25
举例:
String str = "hello world";
相当于str是一个常量,
当对str进行操作的时候,比如
str += "test";
它不是简单的在"hello world"后面加上"test",
而是在内存中重新开一个空间,先拷贝"hello world"再接着拷贝"test"组成新的
字符串"hello worldtest",并把这个字符串的引用重新赋值给str,
也就是说,对于一个String对象引用,你最好就只是取用它,
一旦你对它进行任何操作都将导致引用本身改变,而且还有很高的代价。

参考资料:CSDN.net

本回答被提问者采纳
第3个回答  2008-09-29
因为你把str也改成了一个String,当然可以, 你要说Str = 1;
绝对出错
相似回答