注意:字符串substring方法在jkd6,7,8中的差异。
标题中的substring方法指的是字符串的substring(int beginIndex, int endIndex)方法,这个方法在jdk6,7是有差异的。 substring有什么用? substring返回的是字符串索引位置beginIndex开始,endIndex-1结束的字符串。 来看这个例子: String x = "abcdef"; x = x.substring(1,3); System.out.println(x); 输出: bc 下面看看在JDK之间,它们的实现原理有什么不一样,及值得注意的地方。 JDK 6 String背后是由char数组构成的,在JDK6中,String包含三个字段:char value[], int offset, int count,意思很简单。 substring被调用时,它会创建一个新的字符串,但字符串的值还指向堆中同样的字符数组。它们的区别只是数量和下标引用不一样,如图所示。 image JDK6中的部分源码可以说明这个问题。 //JDK 6 String(int offset, int count, char value[]) ...