天天看點

c++擷取數組長度_靈魂拷問:Java如何擷取數組和字元串的長度?length還是length()?...

c++擷取數組長度_靈魂拷問:Java如何擷取數組和字元串的長度?length還是length()?...

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

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

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

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

int[] arr = 
           

按理說,數組和字元串都是對象,通路長度都用

length()

方法就好了。為什麼數組偏偏劍走偏鋒用的

length

字段呢?

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

建立數組的方法有兩種,這個應該大家都知道了。一種是通過

new

關鍵字建立指定長度後再指派,另外一種是通過

{}

直接進行初始化。

// new
           

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

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

new 
           

這就意味着數組繼承了超類

java.lang.Object

的所有成員方法和字段。事實上,的确如此,我們可以通過以下代碼來擷取數組的類型資訊 Class。

new 
           

輸出的結果會是什麼呢?

class [I
           

class [I

表示一個“int 類型數組”在運作時的對象類型資訊;

class [Ljava.lang.String;

表示一個“字元串類型數組”在運作時的對象類型資訊。

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

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

public 
           

但這樣做真的有必要嗎?為數組單獨定義一個類,是不是有點畫蛇添足的意味。那既然數組沒必要定義成一個類,也就沒有必要再定義一個

length()

方法來擷取數組的長度了,直接用

length

這個字段就可以了,不是嗎?

那為什麼字元串 String 類會有

length()

方法呢?來看一下源碼就明白了。

/**
     * Returns the length of this string.
     * The length is equal to the number of Unicode
     * code units in the string.
     */
           

length()

方法傳回的正是字元數組 value 的長度(length),value 本身是 private 的,是以很有必要為 String 類提供一個 public 級别的方法來供外部通路字元的長度。

總結一下,Java 擷取數組長度的時候用

length

,擷取字元串長度的時候用的是

length()

,他們之間的差別我相信大家已經搞清楚了。

最後提醒一點:萬丈高樓平地起。一棟樓能蓋多高,一座大橋能造多長,重要的是它們的地基。同樣對于我們技術人員來說,基礎知識越紮實,走得就會越遠。

- 沒有更多了😜 -

好了各位讀者朋友們,以上就是本文的全部内容了。能看到這裡的都是最優秀的程式員,二哥必須要為你點個贊👍。如果覺得不過瘾,還想看到更多,我再推薦幾篇給大家。

靈魂拷問:如何檢查Java數組中是否包含某個值 ?

靈魂拷問:Java 的 substring() 是如何工作的?

靈魂拷問:為什麼 Java 字元串是不可變的?

如果覺得這篇文章有點用的話,求在看、求留言、求轉發、求關注,咱們一起養成好習慣!另外,我整理了一份頂級 Java 程式員必讀的書單,回台回複關鍵字「Java」即可免費擷取。

沉默王二 一枚有趣的程式員

c++擷取數組長度_靈魂拷問:Java如何擷取數組和字元串的長度?length還是length()?...

微信掃描二維碼,關注我的公衆号

繼續閱讀