最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java如何獲取數(shù)組和字符串的長度(length還是length())

 更新時間:2019年12月27日 09:47:55   作者:沉默王二  
這篇文章主要介紹了Java如何獲取數(shù)組和字符串的長度(length還是length()),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

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

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

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

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

int[] arr = new int[4];
System.out.println(arr.length);// 獲取數(shù)組的長度

String str = "沉默王二";
System.out.println(str.length());// 獲取字符串的長度

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

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

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

// new
int[] arr = new int[4];
arr[0] = 0;
arr[1] = 1;
arr[2] = 2;
arr[3] = 3;

// {}
int [] arr1 = {0, 1, 2, 3};

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

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

Object arr2 = new int[4];

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

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

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

輸出的結(jié)果會是什么呢?

class [I
class [Ljava.lang.String;

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

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

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

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

但這樣做真的有必要嗎?為數(shù)組單獨定義一個類,是不是有點畫蛇添足的意味。那既然數(shù)組沒必要定義成一個類,也就沒有必要再定義一個 length() 方法來獲取數(shù)組的長度了,直接用 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() 方法返回的正是字符數(shù)組 value 的長度(length),value 本身是 private 的,因此很有必要為 String 類提供一個 public 級別的方法來供外部訪問字符的長度。

總結(jié)一下,Java 獲取數(shù)組長度的時候用 length,獲取字符串長度的時候用的是 length(),他們之間的區(qū)別我相信大家已經(jīng)搞清楚了。

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實現(xiàn)迷你圖書管理系統(tǒng)案例全程

    Java實現(xiàn)迷你圖書管理系統(tǒng)案例全程

    這篇文章主要為大家詳細介紹了如何利用java語言實現(xiàn)簡單的圖書管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-12-12
  • Java調(diào)用高德地圖API根據(jù)詳細地址獲取經(jīng)緯度詳細教程

    Java調(diào)用高德地圖API根據(jù)詳細地址獲取經(jīng)緯度詳細教程

    寫了一個經(jīng)緯度相關(guān)的工具,分享給有需求的小伙伴們,下面這篇文章主要給大家介紹了關(guān)于Java調(diào)用高德地圖API根據(jù)詳細地址獲取經(jīng)緯度,文中通過圖文以及代碼介紹的非常詳細,需要的朋友可以參考下
    2024-04-04
  • 微服務框架FEIGN使用常見問題分析

    微服務框架FEIGN使用常見問題分析

    這篇文章主要為大家介紹了微服務框架FEIGN常見問題分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • java中Scanner輸入用法實例

    java中Scanner輸入用法實例

    Java的Scanner用法,主要用于算法筆試時的控制臺輸入,下面這篇文章主要給大家介紹了關(guān)于java中Scanner輸入用法的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • Spring Boot 核心模塊詳解(12 個模塊詳解及作用說明)

    Spring Boot 核心模塊詳解(12 個模塊詳解及作用說明)

    和 Spring 框架一樣,Spring Boot 框架也是由許多核心模塊組成的,每個模塊負責不同的功能點,本文講著重于介紹 Spring Boot 相關(guān)的 12 個模塊的作用和功能,感興趣的朋友一起看看吧
    2025-04-04
  • Java Swing仿QQ登錄界面效果

    Java Swing仿QQ登錄界面效果

    這篇文章主要為大家詳細介紹了Java Swing仿QQ登錄界面效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • JAVA獲取CLASSPATH路徑的方法詳解

    JAVA獲取CLASSPATH路徑的方法詳解

    這篇文章主要介紹了Java 中獲取類路徑 classpath 的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • Java異常處理操作 Throwable、Exception、Error

    Java異常處理操作 Throwable、Exception、Error

    這篇文章主要介紹了Java異常處理操作 Throwable、Exception、Error,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • java中redissonClient 分布式鎖的使用

    java中redissonClient 分布式鎖的使用

    在集群的情況下,用戶多次請求接口時,存入的內(nèi)容可能會導致重復,這時候就可以使用分布式鎖來限制,本文就來介紹一下java中redissonClient 分布式鎖的使用,感興趣的可以了解一下
    2024-03-03
  • java?-jar命令及SpringBoot通過java?-jav啟動項目的過程

    java?-jar命令及SpringBoot通過java?-jav啟動項目的過程

    本篇文章將為大家講述關(guān)于 SpringBoot 項目工程完成后,是如何通過 java-jar 命令來啟動的,以及介紹 java-jar 命令的詳細內(nèi)容,對SpringBoot java?-jav啟動過程感興趣的朋友跟隨小編一起看看吧
    2023-05-05

最新評論

绥芬河市| 安化县| 神农架林区| 南丹县| 陈巴尔虎旗| 扬州市| 寻乌县| 辰溪县| 页游| 大洼县| 肃北| 黎平县| 仁寿县| 梧州市| 辽宁省| 项城市| 房山区| 建宁县| 阳泉市| 武强县| 化州市| 灌南县| 建始县| 赤壁市| 昭平县| 长寿区| 哈密市| 巴彦淖尔市| 敦化市| 广州市| 信宜市| 凤山县| 旬邑县| 河池市| 缙云县| 进贤县| 新蔡县| 长海县| 扎囊县| 花垣县| 武陟县|