字符串到底是不是常量,String a ="aaa";难道a里的值不能变吗?

来源:百度知道 编辑:UC知道 时间:2024/06/06 03:03:55

a的值不能在修改了,这就是String和StringBuffer的区别,String是不变的,而StringBuffer是可变字符串。
怎么理解呢,在这里a是一个指针(java中叫做引用),它所代表的是“aaa”的地址,它和c语言中的指向数组的指针是一个概念。如果你对a重新赋值,如a="bbb",则这个指针又指向了bbb的地址,而原来的"aaa"并没有改变。
StringBuffer却不同,它就可以改变“aaa”的值

String确实是一个常量类,一旦创建是不能修改的
String a ="aaa";
String a +="bbb";
诸如此类的“修改”过程,实际上是创建了一个新的实例

当然能咯。你用

String a = "aaa";
System.out.println(a);
a = "bbb";
System.out.println(a);

试试看不就行了。。。

这个要看你怎么理解这个a了

如果你认为这个a是栈中的引用变量,那么它是可以变的,它可以指向其他任何String对象

如果你认为这个a是堆中的String对象,那么该对象是不可以改变的!