国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|正則表達(dá)式|

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

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

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

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

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

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

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

上面問題的正確回答姿勢應(yīng)該是這樣的:

?
1
2
3
4
5
int[] arr = new int[3];
System.out.println(arr.length);//使用length獲取數(shù)組的程度
 
String str = "abc";
System.out.println(str.length());//使用length()獲取字符串的長度

那么問題來了,為什么數(shù)組有l(wèi)ength屬性,而字符串沒有?或者,為什么字符串有length()方法,而數(shù)組沒有?

為什么數(shù)組有l(wèi)ength屬性?

首先,數(shù)組是一個容器對象,其中包含固定數(shù)量的同一類型的值。一旦數(shù)組被創(chuàng)建,他的長度就是固定的了。數(shù)組的長度可以作為final實(shí)例變量的長度。因此,長度可以被視為一個數(shù)組的屬性。

有兩種創(chuàng)建數(shù)組的方法:

     1、通過數(shù)組表達(dá)式創(chuàng)建數(shù)組。

     2、通過初始化值創(chuàng)建數(shù)組。

無論使用哪種方式,一旦數(shù)組被創(chuàng)建,其大小就固定了。

使用表達(dá)式創(chuàng)建數(shù)組方式如下,該方式指明了元素類型、數(shù)組的維度、以及至少一個維度的數(shù)組的長度。

該聲明方式是符合要求的,因?yàn)樗付艘粋€維度的長度(該數(shù)組的類型為int,維度為2,第一維度的長度為3)

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

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

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

注:

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

其實(shí),arr的長度就是3。其實(shí)Java中所有的數(shù)組,無論幾維,其實(shí)都是一維數(shù)組。例如arr,分配了3個空間,每個空間存放一個一維數(shù)組的地址,這樣就成了“二維”數(shù)組。但是對于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類

因?yàn)閿?shù)組也是對象,所以下面的代碼也是合法的:

?
1
Object obj = new int[10];

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

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

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

輸出:

?
1
class [I

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

為什么String有l(wèi)ength()方法?

String背后的數(shù)據(jù)結(jié)構(gòu)是一個char數(shù)組,所以沒有必要來定義一個不必要的屬性(因?yàn)樵搶傩栽赾har數(shù)值中已經(jīng)提供了)。和C不同的是,Java中char的數(shù)組并不等于字符串,雖然String的內(nèi)部機(jī)制是char數(shù)組實(shí)現(xiàn)的。(注:C語言中,并沒有String類,定義字符串通常使用char string[6] = "hollis";的形式)

注:要想把char[]轉(zhuǎn)成字符串有以下方式:

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

總結(jié)

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美激情精品久久久久久黑人 | 在线观看一区二区三区四区 | 综合久久精品 | 国产大学生一区 | 91九色视频pron | 91精品国产综合久久久久久丝袜 | 91久色| 最新国产精品 | 国产 欧美 日产久久 | 精品久久久久久久久久久久久久 | 免费一区 | 欧美日一区二区 | 日本电影中文字幕 | 青青草在线视频免费观看 | 国产高清视频一区二区 | 国产精品第一国产精品 | 久草免费在线 | 黄视频在线免费看 | 亚洲国产精品激情在线观看 | 亚洲欧美视频 | 欧美精品综合 | 日韩三区 | 欧美日韩六区 | 亚洲 欧美 日韩 丝袜 另类 | 成年人xxxx| 一区二区三区国产 | 国产一区二区三区视频在线观看 | 精品综合| 91精品观看| 黄色在线免费 | 国产在线观看一区 | 在线观看国产视频 | 中文字幕在线观看1 | 欧美日韩精品一区二区三区四区 | 日日夜夜精品免费视频 | 亚洲性视屏| 综合久久99 | 四虎永久在线观看 | 日韩欧美在线一区二区 | 亚洲精品一区二区三区不 | 久久久大|