为什么结果不是"ChangedName"呢? String类的底层实现是用一个字符数组去实现的,就像Integer类,底层也是对int进行封装[装箱和拆箱]。 看String类的修饰部分(源码): 1 public final class String 2 implements , Comparable<String>, CharSequence { 3 /** The value is used for character storage. */ 4 private final char value[]; 注意,String类加了final关键字,所以不能被继承。 第4行是字符串底层的存储结构:字符数组。 String的内容不能被动态地修改,因为底层是字符数组实现的,数组的大小是在初始化时决定的; 如果可以修改,新的字符串长度比原来数组大,那么就会造成数组越界。