本篇文章為大家展示了Java中怎么獲取數(shù)組和字符串的長(zhǎng)度,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)建站致力于網(wǎng)站建設(shè),網(wǎng)站制作設(shè)計(jì),營(yíng)銷網(wǎng)頁按需求定制制作,外貿(mào)營(yíng)銷網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),小程序設(shè)計(jì),網(wǎng)站SEO優(yōu)化,網(wǎng)站設(shè)計(jì)制作案例豐富,是成都做網(wǎng)站公司和建站公司,歡迎咨詢。
限時(shí) 1 秒鐘給出答案,來來來,聽我口令:“Java 如何獲取數(shù)組和字符串的長(zhǎng)度?length 還是 length()?”
在逛 programcreek 的時(shí)候,我發(fā)現(xiàn)了上面這個(gè)主題。說實(shí)話,我當(dāng)時(shí)腦海中浮現(xiàn)出了這樣一副驚心動(dòng)魄的畫面:
面試官老馬坐在我的對(duì)面,地中海式的發(fā)型令我敬佩有加。盡管略顯疲憊,但他仍然自信地向我拋出了上面這個(gè)問題。稍稍遲疑了一下,我回答說:“數(shù)組用 length,字符串用 length 跟上小括號(hào)”。老馬不愧是面試中的高手,一瞬間就從我的回答中捕獲到了不自信。我能感受得出來,因?yàn)槲铱吹嚼像R的嘴角微微地動(dòng)了一下,似乎想要咂咂嘴。但出于對(duì)于我的禮貌,他克制住了。
到底該用 length 還是 length(),說真的,我當(dāng)時(shí)真有點(diǎn)吃不準(zhǔn),懷念 IDE 的代碼自動(dòng)提醒功能?。?/p>
int[] arr = new int[4];System.out.println(arr.length);// 獲取數(shù)組的長(zhǎng)度String str = "沉默王二";System.out.println(str.length());// 獲取字符串的長(zhǎng)度
按理說,數(shù)組和字符串都是對(duì)象,訪問長(zhǎng)度都用 length() 方法就好了。為什么數(shù)組偏偏劍走偏鋒用的 length 字段呢?
首先呢,我們必須要明白:數(shù)組是一個(gè)容器,當(dāng)它被創(chuàng)建后,不僅元素的類型是確定的,元素的個(gè)數(shù)也是確定的。換句話說,數(shù)組的長(zhǎng)度是確定的,不可能再變長(zhǎng)或者變短。因此,數(shù)組可以使用一個(gè)字段(length)來表示長(zhǎng)度。
創(chuàng)建數(shù)組的方法有兩種,這個(gè)應(yīng)該大家都知道了。一種是通過 new 關(guān)鍵字創(chuàng)建指定長(zhǎng)度后再賦值,另外一種是通過 {} 直接進(jìn)行初始化。
// newint[] arr = new int[4];arr[0] = 0;arr[1] = 1;arr[2] = 2;arr[3] = 3;// {}int [] arr1 = {0, 1, 2, 3};
但不管用哪種方法,數(shù)組的長(zhǎng)度是可以明確知道的。并且不會(huì)再變長(zhǎng)或者變短(學(xué)不了孫悟空的金箍棒)。
由于數(shù)組也是對(duì)象,所以以下代碼是合法的。
Object arr2 = new int[4];
這就意味著數(shù)組繼承了超類 java.lang.Object 的所有成員方法和字段。事實(shí)上,的確如此,我們可以通過以下代碼來獲取數(shù)組的類型信息 Class。
Object arr2 = new int[4];System.out.println(arr2.getClass());Object arr3 = new String[4];System.out.println(arr3.getClass());
輸出的結(jié)果會(huì)是什么呢?
class [Iclass [Ljava.lang.String;
class [I 表示一個(gè)“int 類型數(shù)組”在運(yùn)行時(shí)的對(duì)象類型信息;class [Ljava.lang.String; 表示一個(gè)“字符串類型數(shù)組”在運(yùn)行時(shí)的對(duì)象類型信息。
那為什么數(shù)組不單獨(dú)定義一個(gè)類來表示呢?就像字符串 String 類那樣呢?
一個(gè)合理的解釋是 Java 將其隱藏了。假如真的存在一個(gè) Array.java,我們也可以假想它真實(shí)的樣子,它必須要定義一個(gè)容器來存放數(shù)組的元素,就像 String 類那樣。
public final class String implements java.io.Serializable, Comparable
但這樣做真的有必要嗎?為數(shù)組單獨(dú)定義一個(gè)類,是不是有點(diǎn)畫蛇添足的意味。那既然數(shù)組沒必要定義成一個(gè)類,也就沒有必要再定義一個(gè) length() 方法來獲取數(shù)組的長(zhǎng)度了,直接用 length 這個(gè)字段就可以了,不是嗎?
那為什么字符串 String 類會(huì)有 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() 方法返回的正是字符數(shù)組 value 的長(zhǎng)度(length),value 本身是 private 的,因此很有必要為 String 類提供一個(gè) public 級(jí)別的方法來供外部訪問字符的長(zhǎng)度。
上述內(nèi)容就是Java中怎么獲取數(shù)組和字符串的長(zhǎng)度,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。