程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java中的length和length()深化剖析

Java中的length和length()深化剖析

編輯:關於JAVA

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能有所協助,假如有疑問大家可以留言交流。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved