一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - Java中的length和length()深入分析

Java中的length和length()深入分析

2020-07-05 11:59daisy JAVA教程

java中的length屬性是針對數組說的,比如說你聲明了一個數組,想知道這個數組的長度則用到了length這個屬性。java中的length()方法是針對字符串String說的,如果想看這個字符串的長度則用到length()這個方法。這篇文章將介紹幾個關于Java數

在開始本文前先考慮以下一個問題

在不使用任何帶有自動補全功能IDE的情況下,如何獲取一個數組的長度?以及,如何獲取一個字符串的長度?

這個問題我問過不同水平的程序員,包括初級和中級水平的。他們都不能準確而自信地回答這個問題(如果你能很準確很自信的回答這個問題,那么證明針對這一知識點你比大多數中級程序員掌握的好)。由于現在很多IDE都有代碼補全功能,這使得開發人員在很多問題上都理解的很膚淺。

上面問題的正確回答姿勢應該是這樣的:

?
1
2
3
4
5
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)

?
1
int[][] arr = new int[3][];

使用數組初始化的方式創建數組時需要提供所有的初始值。形式是使用{和}將所有初始值括在一起并用,隔開。

?
1
int[] arr = {1,2,3};

注:

這里可能會有一個疑問,既然數組大小是初始化時就規定好的,那么int[][] arr = new int[3][];定義的數組并沒有給出數組的第二維的大小,那么這個arr的長度到底是如何“規定好”的呢?

其實,arr的長度就是3。其實Java中所有的數組,無論幾維,其實都是一維數組。例如arr,分配了3個空間,每個空間存放一個一維數組的地址,這樣就成了“二維”數組。但是對于arr來說,他的長度就是3。

?
1
2
3
4
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類

因為數組也是對象,所以下面的代碼也是合法的:

?
1
Object obj = new int[10];

數組包含所有從Object繼承下來方法(Java中數組的繼承關系),除clone()之外。為什么沒有一個array類呢?在Java中沒有Array.java文件。一個簡單的解釋是它被隱藏起來了(注:Java中的數組有點類似于基本數據類型,是一個內建類型,并沒有實際的類與他對應)。你可以思考這樣一個問題——如果有一個Array類,那它會像什么樣?它會仍然需要一個數組來存放所有的數組元素,對嗎?因此,定義出一個Array類不是一個好的主意。(譯者注:這里可能有點繞,道理有點類似于:雞生蛋蛋生雞問題,可能比喻也不是很恰當,請讀者自行理解)

事實上我們可以獲得數組的類定義,通過下面的代碼:

?
1
2
int[] arr = new int[3];
System.out.println(arr.getClass());

輸出:

?
1
class [I

“class [I”代表著”成員類型是int的數組”的class對象運行時類型的簽名

為什么String有length()方法?

String背后的數據結構是一個char數組,所以沒有必要來定義一個不必要的屬性(因為該屬性在char數值中已經提供了)。和C不同的是,Java中char的數組并不等于字符串,雖然String的內部機制是char數組實現的。(注:C語言中,并沒有String類,定義字符串通常使用char string[6] = "hollis";的形式)

注:要想把char[]轉成字符串有以下方式:

?
1
2
3
4
char []s = {'a','b','c'};
String string1 = s.toString();
String string2 = new String(s);
String string3 = String.valueOf(s);

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家學習或者使用Java能有所幫助,如果有疑問大家可以留言交流。

延伸 · 閱讀

精彩推薦
  • JAVA教程java中final修飾符實例分析

    java中final修飾符實例分析

    本文通過實例向我們展示了java中final修飾符的概念,final修飾的基本變量和引用類型變量的區別。有需要的小伙伴可以參考下 ...

    hebedich5092019-12-06
  • JAVA教程java中的十個大類總結

    java中的十個大類總結

    java.lang.string字符串類將是無可爭議的冠軍在任何一天的普及和不可以否認。這是最后一個類,用來創建操作不可變字符串字面值 ...

    java之家4382019-10-17
  • JAVA教程commons fileupload實現文件上傳的實例代碼

    commons fileupload實現文件上傳的實例代碼

    這篇文章主要介紹了commons fileupload實現文件上傳的實例代碼,包括文件上傳的原理分析等相關知識點,本文給大家介紹的非常詳細,具有參考借鑒價值,感...

    Itlyh1832020-06-23
  • JAVA教程Java ArrayList.toArray(T[]) 方法的參數類型是 T 而不是 E的原因分析

    Java ArrayList.toArray(T[]) 方法的參數類型是 T 而不是 E的原因分析

    這篇文章主要介紹了Java ArrayList.toArray(T[]) 方法的參數類型是 T 而不是 E的原因分析的相關資料,需要的朋友可以參考下 ...

    小米干飯3032020-04-16
  • JAVA教程Java鎖之可重入鎖介紹

    Java鎖之可重入鎖介紹

    這篇文章主要介紹了Java鎖之可重入鎖介紹,可重入鎖,也叫做遞歸鎖,指的是同一線程外層函數獲得鎖之后,內層遞歸函數仍然有獲取該鎖的代碼,但不受影響...

    junjie1712019-12-04
  • JAVA教程Java 多用戶登錄限制的實現方法

    Java 多用戶登錄限制的實現方法

    最近沒有事情做,閑的發呆,于是寫個東東練練手。這篇文章主要介紹了Java 多用戶登錄限制的實現方法的相關資料,需要的朋友可以參考下 ...

    weixin_366387143472020-07-02
  • JAVA教程java實現計算周期性提醒的示例

    java實現計算周期性提醒的示例

    本文分享一個java實現計算周期性提醒的示例,可以計算父親節、母親節這樣的節日,也可以定義如每月最好一個周五,以方便安排會議 ...

    Java教程網1482019-11-18
  • JAVA教程使用java的Calendar對象獲得當前日期

    使用java的Calendar對象獲得當前日期

    本文給大家分享的是使用使用java的Calendar對象獲得當前日期的上幾個度開始、結束時間,主要思路是先獲得當前季度的開始和結束日期,在當前日期的基礎...

    hebedich1642019-12-25
主站蜘蛛池模板: 日产精品一二三四区国产 | 扒开双腿猛进入爽爽视频ai | 动漫美女被褥吸奶漫画漫画 | se婷婷| 日韩欧美高清一区 | 亚洲第一综合网站 | 女教师巨大乳孔中文字幕免费 | 色戒完整版 | 91色香sxmv最网页版新地址 | 亚洲精品国产成人7777 | 国产精品成人 | 99视频免费在线观看 | 亚洲精品私拍国产福利在线 | 欧美日韩视频在线第一区二区三区 | 波多野结在线观看 | caoporen97免费公开视频 | 日韩在线二区 | 日日操天天爽 | 91香蕉视频在线观看 | 99精品视频免费 | 日本黄色一区 | 草溜短视频 | jizzjizz3d动漫| 女子张腿让男人桶免费 | 国产精品一区二区不卡的视频 | 欧美专区在线视频 | 日本大片免aaa费观看视频 | ai换脸造梦jennie | 国产国语videosex另类 | 国产日韩一区二区 | 久久99re热在线观看视频 | 久久久乱码精品亚洲日韩 | 婷婷日日夜夜 | 亚洲第成色999久久网站 | 校花小雪灌满了男人们的浓浆 | 射玉足 | 国产视频a区 | 色噜噜狠狠狠综合曰曰曰88av | 调教全程肉动画片在线观看 | 青青色在线观看 | 91porny丨首页 |