Java數(shù)組和可變參數(shù)使用舉例詳解
1.數(shù)組的概述
數(shù)組指的是一種容器,可以用來(lái)存儲(chǔ)同種數(shù)據(jù)類型的多個(gè)值
數(shù)組容器在存儲(chǔ)數(shù)據(jù)的時(shí)候,需要結(jié)合隱式轉(zhuǎn)換來(lái)考慮,建議容器的類型和存儲(chǔ)的數(shù)據(jù)類型保持一致
2.數(shù)組的定義
格式一:
數(shù)據(jù)類型[] 數(shù)組名 int [] arra
格式二:
數(shù)據(jù)類型 數(shù)組名 [] int array[]
比如:
int[] a = new int[]{};
int b[] = new int[]{};一般格式一使用的多。
3.數(shù)組的靜態(tài)初始化
完整格式:
數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[] {元素1,元素2,.....};
簡(jiǎn)化格式:數(shù)據(jù)類型[] 數(shù)組名 = {};
測(cè)試:
int[] a = new int[]{1,2,3};
// 簡(jiǎn)寫
int[] b = {1,2,3};4.獲取數(shù)組里的元素
格式:
組名[索引/下標(biāo)] 注意數(shù)組下標(biāo)從0開(kāi)始
測(cè)試:
int[] a = new int[]{1,2,3};
// 簡(jiǎn)寫
int[] b = {1,2,3};
int q = b[0];
System.out.println(q);5.把數(shù)據(jù)存儲(chǔ)到數(shù)組當(dāng)中
格式:
數(shù)組名[索引] = 具體數(shù)據(jù)/變量
測(cè)試;
// 簡(jiǎn)寫
int[] b = {1,2,3};
b[0] = 100;
System.out.println(b[0]); // 100其實(shí)就是覆蓋,一旦覆蓋后,原來(lái)的數(shù)據(jù)就不存在
6.數(shù)組遍歷
兩種方法,即普通for和for-each
視情況使用。
int[] b = {1,2,3};
// 普通for
for (int i = 0; i < b.length; i++) {
System.out.println(b[i]);
}
// for-each,不能操作索引
for (int i : b) {
System.out.println(i);
}7.數(shù)組的動(dòng)態(tài)初始化
格式:
數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組的長(zhǎng)度]
在創(chuàng)建的時(shí)候,由我們自己指定數(shù)組的長(zhǎng)度,由虛擬機(jī)給出默認(rèn)的初始化值
數(shù)組默認(rèn)初始化值的規(guī)律:
整數(shù)類型:默認(rèn)初始化值0
小數(shù)類型:默認(rèn)初始化值0.0
字符類型:默認(rèn)初始化值'/u0000' 空格
布爾類型:默認(rèn)初始化值false
引用數(shù)據(jù)類型:默認(rèn)初始化值null
測(cè)試:
package org.example;
public class Test {
public static void main(String[] args) {
int[] a = new int[5];
for (int i : a) {
System.out.println( i);
}
}
}
結(jié)果:

8.數(shù)組常見(jiàn)問(wèn)題
當(dāng)訪問(wèn)了數(shù)組中不存在的索引,就會(huì)引發(fā)索引越界異常
比如修改for循環(huán)條件:
int[] b = {1,2,3};
// 普通for
for (int i = 0; i <= b.length; i++) {
System.out.println(b[i]);
}
結(jié)果:

9.可變參數(shù)
9.1.語(yǔ)法
可變參數(shù):方法的形參的個(gè)數(shù)是可以發(fā)生變化的,是一個(gè)數(shù)組
格式:
屬性類型...名字
細(xì)節(jié):
在方法的形參中最多只能寫一個(gè)可變參數(shù)
可變參數(shù)必須放在形參的最后
public class Test {
public static void main(String[] args) {
int[] a = new int[]{1, 2, 3};
test1(a);
}
public static void test1(int...arr){
for (int i : arr) {
System.err.println(i);
}
}
}
正常輸出123
你提供的代碼片段非常典型,它展示了可變參數(shù)的基本用法。下面我將為你詳細(xì)解析數(shù)組和可變參數(shù)的區(qū)別,以及為什么我們需要可變參數(shù)。
可變參數(shù)(Varargs)本質(zhì)上是編譯器提供的一種“語(yǔ)法糖”。
在方法內(nèi)部,可變參數(shù) int... arr 完全被當(dāng)作一個(gè) int[] arr 數(shù)組來(lái)處理??梢詫?duì)它進(jìn)行遍歷、獲取長(zhǎng)度等操作,就像操作普通數(shù)組一樣。
編譯器在編譯時(shí),會(huì)自動(dòng)將可變參數(shù)轉(zhuǎn)換為數(shù)組類型。
但是可變參數(shù)想對(duì)于數(shù)組較靈活,可以傳入多個(gè)獨(dú)立參數(shù),也可以直接傳入一個(gè)數(shù)組。
public class Test {
public static void main(String[] args) {
int[] a = new int[]{1, 2, 3};
test1();
test1(1,2,3);
}
public static void test1(int...arr){
for (int i : arr) {
System.err.println(i);
}
}
}結(jié)果:

9.2.可變參數(shù)的優(yōu)勢(shì)
1.避免繁瑣的數(shù)組創(chuàng)建
在沒(méi)有可變參數(shù)之前,如果你想調(diào)用一個(gè)方法處理一組不確定的數(shù)字,比如計(jì)算 1, 2, 3, 4, 5 的和,你必須寫成 sum(new int[]{1, 2, 3, 4, 5})。這非常冗長(zhǎng)。
有了可變參數(shù),你可以直接寫成 sum(1, 2, 3, 4, 5)。
2.替代大量的重載方法
假設(shè)你需要一個(gè)方法來(lái)打印不同數(shù)量的參數(shù),在沒(méi)有可變參數(shù)時(shí),你可能需要寫一堆重載方法:
// 沒(méi)有可變參數(shù)時(shí),需要大量重載
void print(int a) { ... }
void print(int a, int b) { ... }
void print(int a, int b, int c) { ... }
// ... 以此類推,代碼冗余且難以維護(hù)使用可變參數(shù),一個(gè)方法就能搞定所有情況:
// 使用可變參數(shù),一個(gè)方法即可
void print(int... numbers) { ... }總結(jié)
到此這篇關(guān)于Java數(shù)組和可變參數(shù)的文章就介紹到這了,更多相關(guān)Java數(shù)組和可變參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于Java HashMap自動(dòng)排序的簡(jiǎn)單剖析
這篇文章主要給大家介紹了關(guān)于Java HashMap自動(dòng)排序的簡(jiǎn)單剖析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
SpringCloud Zuul過(guò)濾器實(shí)現(xiàn)登陸鑒權(quán)代碼實(shí)例
這篇文章主要介紹了SpringCloud Zuul過(guò)濾器實(shí)現(xiàn)登陸鑒權(quán)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
java報(bào)錯(cuò):找不到或無(wú)法加載主類的解決方法簡(jiǎn)單粗暴
本文主要介紹了java報(bào)錯(cuò):找不到或無(wú)法加載主類的解決方法簡(jiǎn)單粗暴,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
SpringBoot項(xiàng)目打包為JAR文件的實(shí)現(xiàn)
本文主要介紹了SpringBoot項(xiàng)目打包為JAR文件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-09-09
java Struts2框架下實(shí)現(xiàn)文件上傳功能
這篇文章主要為大家詳細(xì)介紹了java Struts2框架下實(shí)現(xiàn)文件上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10
測(cè)量Java對(duì)象所占內(nèi)存大小方式
這篇文章主要介紹了測(cè)量Java對(duì)象所占內(nèi)存大小方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
java獲取nvidia顯卡信息的實(shí)現(xiàn)示例
現(xiàn)在的需求是要獲取nvidia顯卡的使用情況,本文主要介紹了java獲取nvidia顯卡信息的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02
為什么程序中突然多了 200 個(gè) Dubbo-thread 線程的說(shuō)明
這篇文章主要介紹了為什么程序中突然多了 200 個(gè) Dubbo-thread 線程的說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
Springboot整合Redis最簡(jiǎn)單例子分享
這篇文章主要介紹了Springboot整合Redis最簡(jiǎn)單例子分享,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10

