第一个问题,看String类的源代码可以理解一点。
String 使用 final修饰的 是不可以继承的。也就无法覆盖。
---------------------------------------------------------------------------------------------------------------
JDK中的说明:
String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。
字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。例如:
String str = "abc";
等效于:
char data[] = {'a', 'b', 'c'}; String str = new String(data);
---------------------------------------------------------------------------------------------
你翻译一下第一句注释
The value is used for character storage.
value字符数组是用来存放字符数据的.
据我观察这个 value字符数组就是用来存放 字符串的数组。
定义是使用的 private final修饰的,就是不可变的。
这是String类的源代码
- public final class String
- implements java.io.Serializable, Comparable<String>, CharSequence
- {
- /** The value is used for character storage. */
- private final char value[];
- /** The offset is the first index of the storage that is used. */ //偏移(offset)是存储空间使用的第一个索引
- private final int offset;
- /** The count is the number of characters in the String. *///count 是字符串中字符们的数量.
- private final int count;
- public String() {
- this.offset = 0;
- this.count = 0;
- this.value = new char[0];
- }
- public String(String original) {
- int size = original.count;//大小等于传入的字符串大小
- char[] originalValue = original.value;//char[] 原value=原字符串.value
- char[] v;//新的字符数组 v
- if (originalValue.length > size) {//如果字符数组长度 大于 字符串长度size
- // The array representing the String is bigger than the new
- // String itself.
- // Perhaps this constructor is being called
- // in order to trim the baggage, so make a copy of the array.
- int off = original.offset;//偏移
- v = Arrays.copyOfRange(originalValue, off, off+size);//数组复制(原字符数组,偏移,偏移+大小)
- } else {
- // The array representing the String is the same
- // size as the String, so no point in making a copy.
- v = originalValue;
- }
- this.offset = 0;
- this.count = size;
- this.value = v;//字符串对象自己的value等于传入的 原字符串的字符数组 进行判断修改后的 v
- }
- }
复制代码
第二个问题
toString是Object类中的方法
类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。
所有类都继承这个toString()方法。
你可以覆盖它,所以它返回的字符串是根据你的需要定制的。
|