溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中怎么獲取數組和字符串的長度

發布時間:2021-07-29 13:49:54 來源:億速云 閱讀:139 作者:Leah 欄目:編程語言

本篇文章為大家展示了Java中怎么獲取數組和字符串的長度,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

限時 1 秒鐘給出答案,來來來,聽我口令:“Java 如何獲取數組和字符串的長度?length 還是 length()?”

在逛 programcreek 的時候,我發現了上面這個主題。說實話,我當時腦海中浮現出了這樣一副驚心動魄的畫面:

面試官老馬坐在我的對面,地中海式的發型令我敬佩有加。盡管略顯疲憊,但他仍然自信地向我拋出了上面這個問題。稍稍遲疑了一下,我回答說:“數組用 length,字符串用 length 跟上小括號”。老馬不愧是面試中的高手,一瞬間就從我的回答中捕獲到了不自信。我能感受得出來,因為我看到老馬的嘴角微微地動了一下,似乎想要咂咂嘴。但出于對于我的禮貌,他克制住了。

到底該用 length 還是 length(),說真的,我當時真有點吃不準,懷念 IDE 的代碼自動提醒功能??!

int[] arr = new int[4];System.out.println(arr.length);// 獲取數組的長度String str = "沉默王二";System.out.println(str.length());// 獲取字符串的長度

按理說,數組和字符串都是對象,訪問長度都用 length() 方法就好了。為什么數組偏偏劍走偏鋒用的 length 字段呢?

首先呢,我們必須要明白:數組是一個容器,當它被創建后,不僅元素的類型是確定的,元素的個數也是確定的。換句話說,數組的長度是確定的,不可能再變長或者變短。因此,數組可以使用一個字段(length)來表示長度。

創建數組的方法有兩種,這個應該大家都知道了。一種是通過 new 關鍵字創建指定長度后再賦值,另外一種是通過 {} 直接進行初始化。

// newint[] arr = new int[4];arr[0] = 0;arr[1] = 1;arr[2] = 2;arr[3] = 3;// {}int [] arr1 = {0, 1, 2, 3};

但不管用哪種方法,數組的長度是可以明確知道的。并且不會再變長或者變短(學不了孫悟空的金箍棒)。

由于數組也是對象,所以以下代碼是合法的。

Object arr2 = new int[4];

這就意味著數組繼承了超類 java.lang.Object 的所有成員方法和字段。事實上,的確如此,我們可以通過以下代碼來獲取數組的類型信息 Class。

Object arr2 = new int[4];System.out.println(arr2.getClass());Object arr3 = new String[4];System.out.println(arr3.getClass());

輸出的結果會是什么呢?

class [Iclass [Ljava.lang.String;

class [I 表示一個“int 類型數組”在運行時的對象類型信息;class [Ljava.lang.String; 表示一個“字符串類型數組”在運行時的對象類型信息。

那為什么數組不單獨定義一個類來表示呢?就像字符串 String 類那樣呢?

一個合理的解釋是 Java 將其隱藏了。假如真的存在一個 Array.java,我們也可以假想它真實的樣子,它必須要定義一個容器來存放數組的元素,就像 String 類那樣。

public final class String  implements java.io.Serializable, Comparable<String>, CharSequence {  /** The value is used for character storage. */  private final char value[];}

但這樣做真的有必要嗎?為數組單獨定義一個類,是不是有點畫蛇添足的意味。那既然數組沒必要定義成一個類,也就沒有必要再定義一個 length() 方法來獲取數組的長度了,直接用 length 這個字段就可以了,不是嗎?

那為什么字符串 String 類會有 length() 方法呢?來看一下源碼就明白了。

/**   * Returns the length of this string.   * The length is equal to the number of Unicode   * code units in the string.   */  public int length() {    return value.length;  }

length() 方法返回的正是字符數組 value 的長度(length),value 本身是 private 的,因此很有必要為 String 類提供一個 public 級別的方法來供外部訪問字符的長度。

上述內容就是Java中怎么獲取數組和字符串的長度,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女