看了这个http://topic.csdn.net/u/20081222/15/e77deb11-11a2-4a31-a478-f7331270230a.html
关于String的总结 ,ZangXT有提到String的构造方法public String(String original)这个的实现我找到了源代码
private final char value[];
private final int offset;
private final int count; public String(String original) {
int size = original.count;
char[] originalValue = original.value;
char[] v;
if (originalValue.length > 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;
}其中original.count中的count
original.value中的value
original.offset中的offset我都不明白是什么意思
我说一下我的理解。例:String s =("a");
int size = original.count
size = 1;
char[] originalValue = original.value;
originalValue[0]='a';这个过程是不是这样的 value[0]='a',又把这个value的数组下标为0的值赋给了定义的这个char[] originalValue
接下来进行判断size和originalValue.length相等直接执行,else语句,这是不是就是两个对象共享char数组
而IF语句的判断条件我就不懂了,这个size无论什么时候都是和originalValue.length 相等啊
关于String的总结 ,ZangXT有提到String的构造方法public String(String original)这个的实现我找到了源代码
private final char value[];
private final int offset;
private final int count; public String(String original) {
int size = original.count;
char[] originalValue = original.value;
char[] v;
if (originalValue.length > 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;
}其中original.count中的count
original.value中的value
original.offset中的offset我都不明白是什么意思
我说一下我的理解。例:String s =("a");
int size = original.count
size = 1;
char[] originalValue = original.value;
originalValue[0]='a';这个过程是不是这样的 value[0]='a',又把这个value的数组下标为0的值赋给了定义的这个char[] originalValue
接下来进行判断size和originalValue.length相等直接执行,else语句,这是不是就是两个对象共享char数组
而IF语句的判断条件我就不懂了,这个size无论什么时候都是和originalValue.length 相等啊
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货