Java中的length和length()深化剖析。本站提示廣大學習愛好者:(Java中的length和length()深化剖析)文章只能為提供參考,不一定能成為您想要的結果。以下是Java中的length和length()深化剖析正文
在開端本文前先思索以下一個問題
在不運用任何帶有自動補全功用IDE的狀況下,如何獲取一個數組的長度?以及,如何獲取一個字符串的長度?
這個問題我問過不同程度的順序員,包括初級和中級程度的。他們都不能精確而自信地答復這個問題(假如你能很精確很自信的答復這個問題,那麼證明針對這一知識點你比大少數中級順序員掌握的好)。由於如今很多IDE都有代碼補全功用,這使得開發人員在很多問題上都了解的很淺薄。
下面問題的正確答復姿態應該是這樣的:
int[] arr = new int[3]; System.out.println(arr.length);//運用length獲取數組的水平 String str = "abc"; System.out.println(str.length());//運用length()獲取字符串的長度
那麼問題來了,為什麼數組有length屬性,而字符串沒有?或許,為什麼字符串有length()
辦法,而數組沒有?
為什麼數組有length屬性?
首先,數組是一個容器對象,其中包括固定數量的同一類型的值。一旦數組被創立,他的長度就是固定的了。數組的長度可以作為final實例變量的長度。因而,長度可以被視為一個數組的屬性。
有兩種創立數組的辦法:
1、經過數組表達式創立數組。
2、經過初始化值創立數組。
無論運用哪種方式,一旦數組被創立,其大小就固定了。
運用表達式創立數組方式如下,該方式指明了元素類型、數組的維度、以及至多一個維度的數組的長度。
該聲明方式是契合要求的,由於他指定了一個維度的長度(該數組的類型為int,維度為2,第一維度的長度為3)
int[][] arr = new int[3][];
運用數組初始化的方式創立數組時需求提供一切的初始值。方式是運用{和}將一切初始值括在一同並用,隔開。
int[] arr = {1,2,3};
注:
這裡能夠會有一個疑問,既然數組大小是初始化時就規則好的,那麼int[][] arr = new int[3][];定
義的數組並沒有給出數組的第二維的大小,那麼這個arr的長度究竟是如何“規則好”的呢?
其實,arr的長度就是3。其實Java中一切的數組,無論幾維,其實都是一維數組。例如arr,分配了3個空間,每個空間寄存一個一維數組的地址,這樣就成了“二維”數組。但是關於arr來說,他的長度就是3。
int[][] a=new int[3][]; System.out.println(a.length);//3 int[][] b=new int[3][5]; System.out.println(b.length);//3
Java中為什麼沒有定義一個相似String一樣Array類
由於數組也是對象,所以上面的代碼也是合法的:
Object obj = new int[10];
數組包括一切從Object承繼上去辦法(Java中數組的承繼關系),除clone()之外。為什麼沒有一個array類呢?在Java中沒有Array.java文件。一個復雜的解釋是它被隱藏起來了(注:Java中的數組有點相似於根本數據類型,是一個內建類型,並沒有實踐的類與他對應)。你可以考慮這樣一個問題——假如有一個Array類,那它會像什麼樣?它會依然需求一個數組來寄存一切的數組元素,對嗎?因而,定義出一個Array類不是一個好的主見。(譯者注:這裡能夠有點繞,道理有點相似於:雞生蛋蛋生雞問題,能夠比喻也不是很恰當,請讀者自行了解)
現實上我們可以取得數組的類定義,經過上面的代碼:
int[] arr = new int[3]; System.out.println(arr.getClass());
輸入:
class [I
“class [I”代表著”成員類型是int的數組”的class對象運轉時類型的簽名
為什麼String有length()辦法?
String面前的數據構造是一個char數組,所以沒有必要來定義一個不用要的屬性(由於該屬性在char數值中曾經提供了)。和C不同的是,Java中char的數組並不等於字符串,雖然String的外部機制是char數組完成的。(注:C言語中,並沒有String類,定義字符串通常運用char string[6] = "hollis";
的方式)
注:要想把char[]轉成字符串有以下方式:
char []s = {'a','b','c'}; String string1 = s.toString(); String string2 = new String(s); String string3 = String.valueOf(s);
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家學習或許運用Java能有所協助,假如有疑問大家可以留言交流。