你是不是也曾在寫Java代碼時,被一個簡單的問題難???比如:“數(shù)組長度怎么計(jì)算?”別急,今天就帶你用最細(xì)膩的方式,徹底搞懂這個看似基礎(chǔ)卻常踩坑的點(diǎn)!
Q:Java中如何獲取數(shù)組長度?
A:很簡單,用 `.length` 屬性!不是方法,也不是函數(shù),就是一個字段。比如:
int[] arr = {1, 2, 3, 4, 5};System.out.println(arr.length); // 輸出:5注意哈,是 `arr.length`,不是 `arr.length()` —— 這個細(xì)節(jié)我當(dāng)初就栽過跟頭,結(jié)果編譯直接報(bào)錯,還懷疑自己是不是記錯了語法 ??
Q:那多維數(shù)組呢?怎么算?
A:分層看!二維數(shù)組的長度是第一維的元素個數(shù),每一行的長度可以單獨(dú)獲取。
int[][] matrix = {{1, 2}, {3, 4, 5}};System.out.println(matrix.length); // 第一維長度:2System.out.println(matrix[0].length); // 第一行長度:2System.out.println(matrix[1].length); // 第二行長度:3看到?jīng)]?這就是為什么有些面試題會問“二維數(shù)組長度是否固定”——答案是:不固定!每行可以不一樣長,這才是Java數(shù)組的靈活性所在。
Q:字符串?dāng)?shù)組呢?也是這樣嗎?
A:當(dāng)然!字符串?dāng)?shù)組和整型數(shù)組一樣,都是對象,有相同的屬性。
String[] names = {"小明", "小紅", "小剛"};System.out.println(names.length); // 輸出:3我曾經(jīng)在朋友圈發(fā)過一段代碼,配文:“你以為數(shù)組長度是length()?其實(shí)它是length!”評論區(qū)瞬間炸鍋,有人留言說:“原來我一直用錯了,感謝博主拯救我的代碼!”
Q:有沒有陷阱?新手容易犯什么錯?
A:有!最常見的就是把 `.length()` 當(dāng)成方法調(diào)用,尤其從Python轉(zhuǎn)過來的同學(xué),很容易混淆。另外,千萬別對 null 數(shù)組調(diào)用 length —— 會拋出 NullPointerException!
int[] arr = null;System.out.println(arr.length); // 報(bào)錯:NullPointerException建議大家寫代碼前加個判空:
if (arr != null) { System.out.println("數(shù)組長度:" + arr.length);}寫到這兒,我想起自己第一次寫算法題時,因?yàn)橥浥锌眨瑢?dǎo)致線上Bug,被組長罵得狗血淋頭……現(xiàn)在想想,真是成長的代價(jià)啊 ??
總結(jié)一下:Java數(shù)組長度用 `.length`,記住它不是方法,也不帶括號;多維數(shù)組要分層看;null數(shù)組不能調(diào)length!這些細(xì)節(jié),才是資深程序員和新手的區(qū)別。
如果你也在學(xué)Java,或者正準(zhǔn)備面試,這篇干貨建議收藏+轉(zhuǎn)發(fā)給你的小伙伴!一起少踩坑,多進(jìn)步 ??

