The substring () Method in JDK 6 and JDK 7, substringjdk

Source: Internet
Author: User

The substring () Method in JDK 6 and JDK 7, substringjdk



The substring () Method in JDK 6 and JDK 7 By X Wang


Thesubstring(int beginIndex, int endIndex)Method in JDK 6 and JDK 7 are different. Knowing the difference can help you better use them. For simplicity reasons, in the followingsubstring()Representsubstring(int beginIndex, int endIndex)Method.

1. What substring () does?

The substring (int beginIndex, int endIndex) method returns a string that starts with beginIndex and ends with endIndex-1.

String x = "abcdef";x = x.substring(1,3);System.out.println(x);

Output:

bc

2. What happens when substring () is called?

You may know that because x is immutable, when x is assigned with the result of x. substring (1, 3), it points to a totally new string like the following:

However, this divisor is not exactly right or it represents what really happens in the heap. What really happens when substring () is called is different between JDK 6 and JDK 7.

3. substring () in JDK 6

String is supported by a char array. in JDK 6, the String class contains 3 fields: char value [], int offset, int count. they are used to store real character array, the first index of the array, the number of characters in the String.

When the substring () method is called, it creates a new string, but the string's value still points to the same array in the heap. the difference between the two Strings is their count and offset values.

The following code is simplified and only contains the key point for explain this problem.

//JDK 6String(int offset, int count, char value[]) {this.value = value;this.offset = offset;this.count = count;} public String substring(int beginIndex, int endIndex) {//check boundaryreturn  new String(offset + beginIndex, endIndex - beginIndex, value);}

4. A problem caused by substring () in JDK 6

If you have a VERY long string, but you only need a small part each time by using substring (). this will cause a performance problem, since you need only a small part, you keep the whole thing. for JDK 6, the solution is using the following, which will make it point to a real sub string:

x = x.substring(x, y) + ""

5. substring () in JDK 7

This is improved in JDK 7. In JDK 7, the substring () method actually create a new array in the heap.

//JDK 7public String(char value[], int offset, int count) {//check boundarythis.value = Arrays.copyOfRange(value, offset, offset + count);} public String substring(int beginIndex, int endIndex) {//check boundaryint subLen = endIndex - beginIndex;return new String(value, beginIndex, subLen);}

Top 10 questions about Java String.

References:
1. Changes to substring
2. Java 6 vs Java 7 when implementation matters






Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.