1. 程式人生 > >str.split("")在JDK1.7和JDK1.8中的區別

str.split("")在JDK1.7和JDK1.8中的區別

問題描述:

今天幫同門作華為的筆試題,我在自己電腦上除錯好的程式碼上傳後會報陣列越界的異常,這讓我非常的難受,經過認真查詢問題的原因發現,我本地用的是JDK1.7,而上傳後用的是JDK1.8編譯執行,String.split("")在JDK1.7和JDK1.8中切割後是有差別的,具體如下程式碼所示。

在JDK1.8中,如下所示:

public class String_split {
	public static void main(String[] args) {

		String str = "abc";

		String[] str_split = str.split("");

		System.out.println(str_split.length);

		System.out.println("==========================");
		
		for (int i = 0; i < str_split.length; i++) {
			System.out.println(str_split[i]);
		}
	}
}

執行結果:

3
==========================
a
b
c

在JDK1.7中,同樣的程式碼,但是結果不同,如下所示:

public class String_split {
	public static void main(String[] args) {

		String str = "abc";

		String[] str_split = str.split("");

		System.out.println(str_split.length);

		System.out.println("==========================");
		
		for (int i = 0; i < str_split.length; i++) {
			System.out.println(str_split[i]);
		}
	}
}

執行結果:

4
==========================

a
b
c

總結:

字串經過split("")切割後,在JDK1.7中,切割後的字串陣列的長度會比原始字串中包含的字元元素的個數多一,並且切割後的字串陣列的第一個元素是null;

字串經過split("")切割後,在JDK1.8中,切割後的字串陣列的長度和原始字串中包含的字元元素的個數一樣多,並且切割後的字串陣列的第一個元素是原始字串的第一個字元元素。