我们说,string 变量是final的,不可修改的,那么初学者遇到下面这段代码,可能就会产生疑问了
public class StringTest
{
public static void main(String args[])
{
String a = "你好!" ;
System.out.println(a) ;
a = "hello!" ;
System.out.println(a) ;
}
}
你会发现“你好”和“hello”都被打印出来了。
其实,String对象不可修改指的是对象本身不可修改,而不是引用不可修改。String a = "你好";这行代码的意思是声明一个String类型的引用变量叫做a,在内存中创建一个String对象(值为"你好"),然后把这个对象的引用赋值给变量a。a = "hello";这行代码执行的效果是在内存中另外创建了一个String对象(值为"hello"),然后把这个新对象的引用赋值给变量a,而不是把原来的内存中的那个“你好”的String对象值变为“hello”。如果之后内存中那个“你好”的String对象没有任何引用,那么就会被下一次垃圾回收器运行时回收。String和所有的基本类型包装类的对象都是不变量。内存中的不变量对象的值是不能被改变的。
整理自网络
转载请注明原文地址: https://ju.6miu.com/read-17849.html