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

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ā)公司
69人妻一区二区三区蜜桃| 婷婷激情综合亚洲五月色| 日韩精品亚洲一级在线观看| 91精品国产高清久久福利| 精品国产一区二区三区不卡| 日本精彩视频一区二区| 亚洲精品中文字幕一二三| 精品国产一区二区三区性色av| 久久精品熟女亚洲av色| 国产免费高清视频成人| 久久精品国产亚洲av高清不卡| 欧美中文日韩国产字幕| 国产av蜜臀一区二区三区| 四虎最新地址在线观看| 色哟哟网站一区二区精品久久| 欧美午夜国产在线观看| 翔田千里精品久久一区二| 偷拍视频一区二区三区| 欧美中文字幕内射合集| 一二三四在线观看日本资讯| 五十路六十路美熟人妻| 欧美三级在线完整版免费| 亚洲情色精品国产一区| 狠狠综爱五月天的婷婷| 国产午夜在线观看免费视频| 成人自拍偷拍在线视频| 欧美黄色一区二区三区精品| 日本a级免费大片网站| 亚洲精品在线观看毛片| 乱色视频中文字幕在线着| 精品亚洲天堂一区二区三区| 日本免费一区二区三区的电影啊 | 久久东京热日韩精品一区| 日韩精品熟女一区二区三区| 91欧美激情另类亚洲| 中文字幕有码精品在线| 亚洲国产精品热久久网站 | 国产国产成人精品久久| 成年人免费国产视频网站| 日本欧美国产污黄在线观看| 欧美老熟妇一区二区三区|