欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Java中什么是可變參數(shù)

這篇文章給大家介紹Java中什么是可變參數(shù),內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

成都創(chuàng)新互聯(lián)是一家專業(yè)從事做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)的品牌網(wǎng)絡(luò)公司。如今是成都地區(qū)具影響力的網(wǎng)站設(shè)計(jì)公司,作為專業(yè)的成都網(wǎng)站建設(shè)公司,成都創(chuàng)新互聯(lián)依托強(qiáng)大的技術(shù)實(shí)力、以及多年的網(wǎng)站運(yùn)營(yíng)經(jīng)驗(yàn),為您提供專業(yè)的成都網(wǎng)站建設(shè)、營(yíng)銷型網(wǎng)站建設(shè)及網(wǎng)站設(shè)計(jì)開發(fā)服務(wù)!

Java 的可變參數(shù)究竟是怎么一回事?可變參數(shù)是 Java 1.5 的時(shí)候引入的功能,它允許方法使用任意多個(gè)、類型相同(is-a)的值作為參數(shù)。就像下面這樣。

public static void main(String[] args) {

print("沉");

print("沉", "默");

print("沉", "默", "王");

print("沉", "默", "王", "二");

}

public static void print(String... strs) {

for (String s : strs)

System.out.print(s);

System.out.println();

}

靜態(tài)方法 print() 就使用了可變參數(shù),所以 print("沉") 可以,print("沉", "默") 也可以,甚至 3 個(gè)、 4 個(gè)或者更多個(gè)字符串都可以作為參數(shù)傳遞給 print() 方法。

說(shuō)到可變參數(shù),我想起來(lái)阿里巴巴開發(fā)手冊(cè)上有這樣一條規(guī)約。

意思就是盡量不要使用可變參數(shù),如果要用的話,可變參數(shù)必須要在參數(shù)列表的最后一位。既然坑位有限,只能在最后,那么可變參數(shù)就只能有一個(gè)(悠著點(diǎn),悠著點(diǎn))。如果可變參數(shù)不在最后一位,IDE 就會(huì)提示對(duì)應(yīng)的錯(cuò)誤,如下圖所示。

那可變參數(shù)是怎么工作的呢?

原理也很簡(jiǎn)單。當(dāng)使用可變參數(shù)的時(shí)候,實(shí)際上是先創(chuàng)建了一個(gè)數(shù)組,該數(shù)組的大小就是可變參數(shù)的個(gè)數(shù),然后將參數(shù)放入數(shù)組當(dāng)中,再將數(shù)組傳遞給被調(diào)用的方法。

這就是為什么可以使用數(shù)組作為參數(shù)來(lái)調(diào)用帶有可變參數(shù)的方法的根本原因。代碼如下所示。

public static void main(String[] args) {

print(new String[]{"沉"});

print(new String[]{"沉", "默"});

print(new String[]{"沉", "默", "王"});

print(new String[]{"沉", "默", "王", "二"});

}

public static void print(String... strs) {

for (String s : strs)

System.out.print(s);

System.out.println();

}

那如果方法的參數(shù)是一個(gè)數(shù)組,然后像使用可變參數(shù)那樣去調(diào)用方法的時(shí)候,能行得通嗎?大家感興趣的話,不妨試一試(行不通,噓)。

那一般什么時(shí)候使用可變參數(shù)呢?

可變參數(shù),可變參數(shù),顧名思義,當(dāng)一個(gè)方法需要處理任意多個(gè)相同類型的對(duì)象時(shí),就可以定義可變參數(shù)。Java 中有一個(gè)很好的例子,就是 String 類的 format() 方法,就像下面這樣。

System.out.println(String.format("年紀(jì)是: %d", 18));

System.out.println(String.format("年紀(jì)是: %d 名字是: %s", 18, "沉默王二"));

PS:%d 表示將整數(shù)格式化為 10 進(jìn)制整數(shù),%s 表示輸出字符串。

如果不使用可變參數(shù),那需要格式化的參數(shù)就必須使用“+”號(hào)操作符拼接起來(lái)了。麻煩也就惹禍上身了。

在實(shí)際的項(xiàng)目代碼中,開源包 slf4j.jar 的日志輸出就經(jīng)常要用到可變參數(shù)(log4j 就沒(méi)法使用可變參數(shù),日志中需要記錄多個(gè)參數(shù)時(shí)就痛苦不堪了)。就像下面這樣。

protected Logger logger = LoggerFactory.getLogger(getClass());

logger.debug("名字是{}", mem.getName());

logger.debug("名字是{},年紀(jì)是{}", mem.getName(), mem.getAge());

查看源碼就可以發(fā)現(xiàn),debug() 方法使用的可變參數(shù)。

public void debug(String format, Object... arguments);

那在使用可變參數(shù)的時(shí)候有什么注意事項(xiàng)嗎?

有的,有的。我們要避免重載帶有可變參數(shù)的方法——這樣很容易讓編譯器陷入自我懷疑中

public static void main(String[] args) {

print(null);

}

public static void print(String... strs) {

for (String a : strs)

System.out.print(a);

System.out.println();

}

public static void print(Integer... ints) {

for (Integer i : ints)

System.out.print(i);

System.out.println();

}

這時(shí)候,編譯器完全不知道該調(diào)用哪個(gè) print() 方法,print(String... strs) 還是 print(Integer... ints),傻傻分不清。

假如真的需要重載帶有可變參數(shù)的方法,就必須在調(diào)用方法的時(shí)候給出明確的指示,不要讓編譯器去猜。

public static void main(String[] args) {

String [] strs = null;

print(strs);

Integer [] ints = null;

print(ints);

}

public static void print(String... strs) {

}

public static void print(Integer... ints) {

}

上面這段代碼是可以編譯通過(guò)的。因?yàn)榫幾g器知道實(shí)參是 String 類型還是 Integer 類型,只不過(guò)為了運(yùn)行時(shí)不拋出 NullPointerException,兩個(gè) print() 方法的內(nèi)部要做好判空的操作。

關(guān)于Java中什么是可變參數(shù)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

文章名稱:Java中什么是可變參數(shù)
轉(zhuǎn)載源于:http://aaarwkj.com/article42/pjcdec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、全網(wǎng)營(yíng)銷推廣、網(wǎng)站設(shè)計(jì)公司、虛擬主機(jī)軟件開發(fā)、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
99久在线观看精品视频| 欧美人妻精品一区二区| 欧美日韩性生活视频在线| 欧美大尺度影片在线观看| 精品国产av一区蜜臀av| 99精品午夜福利在线| 亚洲不卡免费在线视频| 欧美日韩亚洲国产三级| 美女午夜福利一区二区| 中文字幕在线看二区不卡| 日本中文字幕黄色人妻| 国产熟女av一区二区| 91欧美日韩中在线视频| 日本一区二区不卡视频在线播放| 午夜激情在线观看国产| 国产成人久久精品二区三区| 国产亚洲加勒比久久精品| 国产剧情av在线资源| 色综合一区二区日本韩国亚洲 | 快播av手机在线播放| 国产一区二区三区自拍| 91国产香蕉在线观看| 色噜噜噜av天堂九区| 天堂中文在线官网在线 | 人妻在线中文字幕一区| 天天躁日日躁夜夜躁夜夜| 日韩伦理高清在线观看| 人妻天天爽夜夜爽欧美色| 风韵丰满熟妇老熟女啪啪| 国产精品成人一区二区艾草| 国产在线精品成人欧美| 亚洲码与欧洲码一二三| 日韩欧美亚洲另类视频| 亚洲欧美国产另类精品| 亚洲午夜精品毛片成人| 日韩精品不卡在线观看| 日韩电影一区二区在线观看中文字幕| 成人爱爱视频在线免费观看| 国产真人作爱视频免费| 新午夜福利片在线观看| 日本中文字幕激情在线|