因为String类是被final修饰的(这个你可以看下源代码),所以String不可能出现被改变的情况,而是重新创建了对象, String a1=new String("java"); 这是创建了一个String的对象, 然后 a1.replace('a','b'); 其实又创建了一个对象把引用赋值给了a2 , 所以a2和a3的结果会不通 == 比较的是内存地址的引用,所以不会相等,如果要比较它们的值的话,那么就要使用 equals比较 System.out.println("a2==a3?:"+(a2.equals(a3))); 将会返回true |