java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java中String类的值创建后不能修改

Java中String类的值为什么创建后不能修改?

作者:一只编程的猪猪

Java中String的值创建后真的不能修改吗?本文深入解析String的不可变性,通过内存变化图和代码示例,带你搞懂字符串常量池、堆栈内存以及==比较的本质,想彻底理解Java String,看这一篇就够了

Java中String类的值在创建后不能修改

在Java中,String类型字符串的值在创建后就不能修改。

这个修改是指String对象本身的内容没有改变,因为事实上String对象内容的改变是通过内存地址的改变来完成的。

String a = "Hello";
String b = "World";
a = a + b;
System.out.println(a);	//Hello World

如上输出结果为“Hello World”,实际内存变化如下图所示。

第二次的a会在方法区的字符串常量池中重新分配一个内存存放“Hello World”,并存放其内存地址,而之前a存放的内存地址中的Hello不会发生任何变化。

对String类进行扩展说明

String类中不同的构造方法在调用时对应在JVM中的操作是不同的。

String a = "Hello";
String b = "Hello";
System.out.println(a == b);	//true

String x = new String("World");
String y = new String("World");
System.out.println(x == y);	//false

如上代码中的两个输出结果是不一样的。第一个输出为“true”,第二个输出为“false”。

这是因为:

以上文字描述可如下图所示

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文