你括號里的int arr,就是給你的add方法定一個規(guī)則,你要用add這個方法,必須滿足他的條件,
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了中山免費(fèi)建站歡迎大家使用!
public static int add(int x , int y)
比如說這個好了,你要調(diào)用它,必須給他2個int的參數(shù),add(2,3),public static int add(int x , String y)換成String,就變成add(2,"3"),或者String a=3;add(2,a);必須跟add方法的參數(shù)類型個數(shù)對應(yīng),你這里好幾個add,你傳入2個int就會調(diào)用public static int add(int x , int y)
,傳入3個就會調(diào)用public static int add(int x , int y, int z)
,就是這個道理,這叫做方法重載,同個方法名,多種表現(xiàn)方式
首先,可變長度參數(shù)列表就是一個數(shù)組。
觀察Method
類的方法Object invoke(Object obj, Object... args);
可以發(fā)現(xiàn) 參數(shù)obj是要執(zhí)行的對象,args是方法的參數(shù)。
method.invoke(example, parameters)的意思是執(zhí)行對象example的指定方法,這個方法接收參數(shù)為數(shù)組parameters中的元素。
方法myMethod只有一個參數(shù):字符串?dāng)?shù)組。如果method.invoke(example, new String[] { "臥槽,", "牛逼! ", "你麻痹真強(qiáng)" }),系統(tǒng)會以為你要執(zhí)行myMethod(String str1,String str2,String str3)。但是Example類沒有這個方法,所以會報(bào)錯。如果invoke(example, new Object[] {new String[] {"臥槽,","牛逼! ","你真強(qiáng)"}}),就是告訴系統(tǒng),你要找的是myMethod(String[] strs),由于可變參數(shù)等價于數(shù)組,于是找到了了Example類中的myMethod(String... strings)。
這個是JDK5.0以上的版本新加的功能。 那個for循環(huán)也是新加的功能。
那個可變參數(shù)的就是個數(shù)組,你傳多少個參數(shù)都被放到那個數(shù)組里面。
這樣方便了程序員,因?yàn)槿绻淮_定要傳的參數(shù)的個數(shù)的話,我們要寫帶1個參數(shù)的,帶2個參數(shù),帶3個參數(shù)的,這樣很麻煩。 該進(jìn)后的這個方法,我們只要寫一個函數(shù)就好,可以傳任意個參數(shù)。
你好,很高興回答你的問題。
這就是java可變參數(shù)的傳參方式,可以直接傳一個符合參數(shù)數(shù)據(jù)類型的數(shù)組,也可以是用逗號分割的多個符合參數(shù)數(shù)據(jù)類型變量。
如果有幫助到你,請點(diǎn)擊采納。
java反射調(diào)用可變參數(shù)的方法的方式是傳入objects參數(shù),如下代碼:
public?class?Reflect?{
public?static?void?main(String[]?args)?throws?Exception?{
Class??clazz?=?Single.class;
Single?single?=?(Single)?clazz.newInstance();
ListString?list?=?new?ArrayListString(){
private?static?final?long?serialVersionUID?=?1L;
{
add("fuck");
add("ni");
add("mei");
}
};
//獲取method兩種方式,?在method中?數(shù)組的的空間大小是可以隨便寫的不一定使用0
/*?1?*/
Method?method?=?clazz.getDeclaredMethod("method",?Array.newInstance(Object.class,?0).getClass());
/*?2?*/
method?=?clazz.getDeclaredMethod("method",?(new?Object[0]).getClass());
//初始化參數(shù)
/*?1?*/
Object?objs?=?Array.newInstance(Object.class,?2);
Array.set(objs,?0,?list);
Array.set(objs,?1,?"23");
method.invoke(single,?objs);
/*?2?*/
Object[]?objects?=?{1,?"fuck",?list};
method.invoke(single,?new?Object[]{?objects?});
}
}
class?Single?{
public?void?method(Object...?objs)?{
System.out.println(Arrays.deepToString(objs));
}
}
結(jié)果:
[[fuck,?ni,?mei],?23]
[1,?fuck,?[fuck,?ni,?mei]]
Java中方法內(nèi)的包含可變參數(shù)的方法
創(chuàng)建一個工程,或者在已有工程中,創(chuàng)建一個包,寫一個類,我命名為Parameters,大家隨便。
核心就是這個方法, 把參數(shù)is理解成一個數(shù)組就是了:
private static void function(int... is) {
for (int i = 0; i is.length; i++) {
System.out.print(is[i]+" ");
}
}
為了使這個方法更復(fù)雜一點(diǎn)點(diǎn)呢,我們可以填一點(diǎn)兒小功能。
比如,我想得到累加值,嘿嘿,很簡單的。
方法之初申明一個int類型變量,賦初值為零。for中與數(shù)組中每一個值進(jìn)行累加。如圖
好了,寫一個很簡單的方法測試一下。
main()里面寫
function(new int[] { 1, 2, 3, 9, 7,});
最后,運(yùn)行一下結(jié)果,很簡單的吧?
文章標(biāo)題:JAVA可變參數(shù)的代碼 java可變參數(shù)和數(shù)組
轉(zhuǎn)載源于:http://www.rwnh.cn/article26/hiihjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、營銷型網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、用戶體驗(yàn)、網(wǎng)站建設(shè)、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)