美文网首页Java
Java中String类的值在创建后不可修改问题

Java中String类的值在创建后不可修改问题

作者: 花伤情犹在 | 来源:发表于2020-09-14 16:18 被阅读0次

By-花伤情犹在  QQ:1926585708

在java中对于String类型字符串的值一旦创建后就不可更改的问题,明明把string的值改变了,为什么说不能修改呢?

String a ="hello";

String b = "java";

a = a + b;//在字符串常量池中新创建对象hellojava,然后把a的地址值指向helloJava的地址值


a的输出结果为 hello 

b的输出结果为 java

a的值明明就发生改变了,但是a的值仍然是hello,只是地址值指向了字符串池中新创建的对象hellojava。

所以事实上String对象内容的改变是通过内存地址的改变来完成的,而其对象本身内容没有改变。

原理图:

值没有发生改变,只是指向的地址值发生改变

怎么验证呢?

public class demo01 {

          publicstaticvoidmain(String[] args){

              String a ="hello";

              System.out.println(System.identityHashCode(a));

              String b = "java";

              System.out.println(System.identityHashCode(b));

              a = a + b;

              System.out.println(System.identityHashCode(a));

          }

      }

对象的地址并不一定样,说明a=a+b;后a的地址已经变了,不再指向原来的地址。

相关文章

  • Java中String类的值在创建后不可修改问题

    By-花伤情犹在 QQ:1926585708 在java中对于String类型字符串的值一旦创建后就不可更改的问题...

  • 《Thanking in Java》13.字符串

    13.1 不可变String String类中每一个看起来会修改String值的方法,实际上都是创建了一个全新的S...

  • 13. 字符串

    1.不可变 String 类中每一个看起来会修改 String 值的方法,实际上都是创建了一个全新的 String...

  • Java编程思想(十二) 字符串

    1、不可变String String类中每一个看起来会修改String值的方法,实际上都是创建了一个全新的Stri...

  • 为什么 Java 要把字符串设计成不可变的

    String是Java中一个不可变的类,所以它一旦被实例化就无法被修改。不可变类的实例一旦创建,其成员变量的值就不...

  • Java String

    String在JAVA中是以final修饰的char数组实现的,所以一旦创建了某个string,不可修改。而且St...

  • Java 中字符串的不变性

    Java 中字符串的不变性 String 对象创建后则不能被修改,是不可变的,所谓的修改其实是创建了新的对象,所指...

  • java基础:字符串的拼接

    1.不可变的String String对象是不可变的。String类中每一个看起来会修改String值的方法,实际...

  • Java中的字符串

    一、Java中字符串的不变性 String对象创建后则不能修改,是不可变得,所谓的修改其实是创建了新的对象,所指向...

  • 13.String

    1.不可变String String对象是不可变的。String类中每一个看起来会修改String值的方法,实际上...

网友评论

    本文标题:Java中String类的值在创建后不可修改问题

    本文链接:https://www.haomeiwen.com/subject/zvpzektx.html