黑马程序员技术交流社区

标题: substring()方法在JDK6和JDK7中的区别 [打印本页]

作者: みぎ    时间: 2015-3-19 16:50
标题: substring()方法在JDK6和JDK7中的区别
在JDK6中,这个方法只会在标识现有字符串的字符数组上 给一个窗口来表示结果字符串,但是不会创建一个新的字符串对象。如果需要创建个新字符串对象,可以这样在结果后面+一个空的字符串:
  1. str.substring(m, n) + ""
复制代码

Oracle JDK7中的substring()方法会创建一个新的字符数组,而不用之前存在的。
substring() in JDK 6:
  1. //JDK 6
  2. String(int offset, int count, char value[]) {
  3.     this.value = value;
  4.     this.offset = offset;
  5.     this.count = count;
  6. }

  7. public String substring(int beginIndex, int endIndex) {
  8.     //check boundary
  9.     return  new String(offset + beginIndex, endIndex - beginIndex, value);
  10. }
复制代码
substring() in JDK 7:
  1. //JDK 7
  2. public String(char value[], int offset, int count) {
  3.     //check boundary
  4.     this.value = Arrays.copyOfRange(value, offset, offset + count);
  5. }

  6. public String substring(int beginIndex, int endIndex) {
  7.     //check boundary
  8.     int subLen = endIndex - beginIndex;
  9.     return new String(value, beginIndex, subLen);
  10. }
复制代码


参考:http://www.programcreek.com/2013/09/the-substring-method-in-jdk-6-and-jdk-7/






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2