final关键字
final关键字修饰的类不能被继承、修饰的方法不能被重写但可以重载多个final修饰的方法、修饰的变量不可变。final修饰的类中所有成员方法都会被隐式地指定为final方法,重写的前提是子类可以从父类中继承此方法。final修饰一个成员变量必须初始化,final修饰一个基本数据类型时,表示该基本数据类型的值一旦在初始化后便不能发生变化,如果final修饰的是一个引用类型,初始化后这个引用变量所引用的地址不会改变即一直引用同一个对象,但这个对象值可以发生改变。
public final class String
implements java.io.Serializable, Comparable<string>, CharSequence{
/** The value is used for character storage. */
private final char value[];
/** Cache the hash code for the string */
private int hash; // Default to 0
}
value指向的是一个字符串数组,字符串中的字符就是用这个value变量存储起来的,value赋予初始值之后,value指向的地址就不能再改变了。虽然value指向的数组是可以改变的,但是String没有提供相应的方法修改数组的元素。在StringBuilder中提供了响应的方法修改value指向数组的元素,这也是StringBuilder的字符串序列可变的原因。
String类是由final关键字修饰的,所以具有不可变性。字符串s="abcd",赋值成"abcedl*,不是在原内存地址上修改数