Java 数据类型在实际开发中应用(4)

  String类初始化之后不可变,因为java设计者不希望我们方法传参是字符串的时候,方法内修改会影响外边的串,所以采取了一种传递拷贝的方式(也就是传值)

String ss = "this is the origen String"; TestString.showString(ss); public static void showString(String s){ System.out.println(s); }

2.2.1 Java中String不可变是怎么一回事

  java中,一旦产生String对象,该对象就不会在发生变化。但是String另一方面的确提供了修改String的方法。这看起来很矛盾,实际上是我们没有仔细的了解那些修改的方法

比如replace(),如果可以看到源码,可以清楚的看到该方法实际上新产生一个字符串,替换操作是针对新的字符串。(下图参考自参考Java进阶01 String类,简单的表示replace()方法调用时

s的变化)

                                  

Java 数据类型在实际开发中应用

下边的代码 :我在原字符串的基础上添加了一句话,然后判断他们是否相同(如果是同一个对象修改,==输出结果应该是true)

String s1 = "我";

s1+="我想在加点东西";
system.out.println(s1 == s2)//输出结果是false

思考一下 "s1指向的对象中的字符串是什么"(我们潜意识的认为s1也会被修改,但是当s2 = "s2"时,实际上s2的引用已经被修改,它和s1没关系了)

String s1 = "s1"; String s2 = s1; s2 = "s2";//s1指向的对象中的字符串是什么?
System.out.println(s1);//输出结果是s1

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7f283ff15f83e24d74931f5c52aadef4.html