參數java
『壹』 java 可變參數是什麼
java 可變參數是1.5版本的新特性,也就是說用戶若是想定義一個方法,但是在此之前並不知道以後要用的時候想傳幾個參數進去,可以在方法的參數列表中寫參數類型或者數組名,然後在方法內部直接用操作數組的方式操作做游族。
(1)參數java擴展閱讀
java可變長的形參聲明格式:dataType...parameters。
其中,省略號表示數據類型為dataType的parameters參數個數不固定的,可為任意個。此外,在方法調用時,變長形式參數可被替換磨敏成1個、2個或多個參數。在編譯時,方法的變長參數將被看成具有相同類型的一維數組。
在java語言開發中,從JDK1.5以後,java允許定義形參長度可變的參數從而允許為純弊方法指定數量不確定的形參。
『貳』 Java中方法內的可變參數怎麼使用
Java1.5增加了新特性:可變參數:
適用於參數個數不確定,類型確定的情況,java把可拿升變參數當做數組處理。
注意:可變參數必須位於最後一項。當可變櫻畝參數個數多餘一個時,必將有一個不是最後一項,所以只支持有一個可變參數。因為參數個數不定,所以當其後邊還有相同類型參數時,java無法區分傳入的參數屬於前一個可變參數還是後邊的參數,所以只能讓可變參數位於最後一項。
可變參數的特點:
(1)、只能出現在參數列表的最後;
(2)、...位於變數類型和變數名之間,前後有無空格都可以;
(3)、調用可變參數的方法時,編譯器為該可變參數隱含創建一個數組,在方法體中一數組的形式訪問可變參數。
publicclassVarable{
publicstaticvoidmain(String[]args){
System.out.println(add(2,3));
System.out.println(add(2,3,5));
}
publicstaticintadd(intx,int...args){
脊敏森intsum=x;
for(inti=0;i<args.length;i++){
sum+=args[i];
}
returnsum;
}
}
『叄』 java中參數是什麼
參數分為實參和形參。方法名括弧裡面的參數是形參,調用方法或者函數的括弧裡面的是實參。
『肆』 Java參數傳遞
Java的方法參數傳遞都是值傳遞。這個問題需要樓主慢慢理解,如果基礎薄弱(C、C++基礎弱)就記住就好。如果基礎好可以從內存角度理解。
從語法和簡單層面理解:str是一個String類型的對象,傳遞給changeStr方法,傳遞的是str的引用內容,方法內的changeStr(String value),value變數和str指向了同一個對象,但是value重新賦值後,它的指向改變了,但是str的指向不會發生,所以str的輸出還是「Hello」,而changeObjValue方法傳入的TEST的對象pt給changeObjValue(TEST ref),ref變數和pt變數指向了同一對象,之後通過改變了對象的內容,pt變數的指向沒變,但是執行的對象的變數變了。所以pt的ptValue值變了。
進一步理解,Java對字元串進行了特殊處理,因為字元串這種數據類型太常用了,為了節省內容提高效率。Java把字元串放入了常量池,所以我們沒辦法在運行時修改一個字元串對象的內容。也就是對value變數的賦值操作是重寫建立了一個對象。樓主可以測試經典的java String的代碼:
Stringa="a";
Stringb="a";
Stringc=newString("a");
Stringd=newString("a");
System.out.println(a==b);
System.out.println(a==c);
System.out.println(b==c);
System.out.println(d==c);
再深入,Java沒有C和C++的指針概念,可以粗暴的理解Java的引用是一種特殊的指針(實際上Java盡量把程序猿從指針中解放出來,或者說避免直接操作內存對象)。有一種不負責的說法:Java的基本類型傳遞傳遞的是值,也就是值的副本,引用類型傳遞的時引用。但是要注意String對象的內容不可變,而且傳遞的引用指向不可變。運行時Java的局部變數在棧空間中(線程私有),對象在堆內存中(線程公有),changeStr方法相當於在堆內存中又開辟了一塊兒空間重寫分配了一個對象,但是str沒有指向這個新new出來的對象。而changeObjValue方法修改的pt指向的對象的內容也就是修改的是堆內存的數據,ref和pt指向的是一塊兒內存。所以pt的對象數據會變化。
『伍』 java 方法傳參時,不是必須傳的參數如何設置
1、java是強匹配的,調用方法,對應的參數必須要有值,如果不是必須傳的,意思是你可能不需要用的,可以傳null
2、或者改造原有的方法參數,把多餘的參數去掉
3、或者另外寫一個方法,少參數的,然後該方法內部,調用原來的方法
4、代碼截圖如下:
5、看代碼,13行的,就相當於調用少一個參數的
拓展資料:
如題,有一個方法里兩個形參,我另一個文件類中一個方法想要那個方法的返回值,可是第二個參數在這里用不到,能否只傳第一個參數 如何實現,前提這個類不能繼承後重寫方法,因為多人合同寫的。
解決方案
不可以,變通的辦法是再寫一個只有一個參數的函數重載形式,在其中給另一個參數一個預設值,間接調用。
解決方案二:
一個Action調用兩個不同的方法
解決方案三:
調用的時候給一個無影響的值
解決方案四:
講道理的話是不能這樣做的,不過如果你傳的第二個參數如果對於當前調用時沒有意義也是可以傳一個值的。
解決方案五:
首先,Java語法規定了方法的參數列表,那麼調用的時候就需要按照方法定義傳遞給足夠的參數,你那種需要少傳參的話可以重載方法,不要定義那麼多參數就可以了。
解決方案六:
你一個方法傳入兩個參數,但如果你只調用一個,那麼另外一個參數你讓人家多尷尬,你讓人家尷尬了,人家也不會讓你好過的,因此就給你報錯啊,當然你可以像樓上所說,傳入一個無影響的參數進去,但這又有什麼意義,還造成代碼的浪費,你這個方法每調用一次,就造成一次浪費,因此,最好的方法就是傳入一個參數,寫一個重載方法。初學者經驗不足,互相指教~
解決方案七:
既然用不到第二個參數,最簡單的,給個無關痛癢的初始值。
解決方案八:
方法定義2個參數,在方法體內提供判斷參數,看傳入的參數是否為null,調用方法時,只傳入一個值,另一個是null就行。
解決方案九:
方法 重載一下 就好了。
『陸』 java中參數的具體意義跟作用是什麼啊
參數的作用,簡單說來,就是將傳入參數加入到程序處理流程。滲肢雹
比如說寫一個簡單的方法
public
int
calculate(double
number){
//number
就是一個double類型的參數,它關繫到這個方法叢帆計
//算的結果
return
number*
2;
}
調用的時候直接產生飢世這個類的對象,比如說是a
就用
a.calculate(2.0);就可以,傳入參數為2.0
『柒』 Java中函數參數的傳遞是怎樣進行的
Java中函數參數的傳遞是按值傳遞。
下面證明Java中參數傳遞是完完全全是傳值而不是傳址。
一:
package com.sitinspring;
public class ChangeClass{
public void changeInt(int i){
i=5;
}
public void changeLong(long i){
i=555;
}
public void changeString(String str){
str="5555";
}
public void changeMember(Member member){
member=new Member("Cindy",35);
}
public void changeMemberField(Member member){
member.setAge(20);
member.setName("Andy");
}
public static void main(String[] args){
ChangeClass changeClass=new ChangeClass();
int intValue=10;
changeClass.changeInt(intValue);
System.out.println(intValue);
long longValue=10;
changeClass.changeLong(longValue);
System.out.println(longValue);
String stringValue="1234";
changeClass.changeString(stringValue);
System.out.println(stringValue);
Member member2=new Member("Douglas",45);
changeClass.changeMember(member2);
System.out.println(member2);
Member member=new Member("Bill",25);
changeClass.changeMemberField(member);
System.out.println(member);
}
}
二:
package com.sitinspring;
public class Member{
private String name;
private int age;
public Member(String name,int age){
this.age=age;
this.name=name;
}
public String toString(){
return "Member name="+name+" age="+age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
輸出:
10
10
1234
Member name=Douglas age=45
Member name=Andy age=20
解釋:
第一個輸出10是因為int是基本類型,傳遞的參數是intValue的拷貝,對拷貝的修改對原值intValue沒有影響.
第一個輸出10和上面是一個道理.
第三個輸出1234.由於String是類類型, str是stringValue的地址拷貝,參數str指向的地址和stringValue的一致,但在函數changeString 中,由於String的特殊性, str=「5555」和str=new String(「5555」)是等價的, str指向了新的」5555」所在的地址,此句後str就與原來的stringValue徹底脫離了聯系.
第四個輸出Member?name=Douglas?age=45的道理和上面相同.
第五個輸出Member?name=Andy?age=20是因為changeMemberField函數中修改了參數member 的值,也就是修改member指向實例的值,而這個實例正是member指向的值,因此member就變成了name=Andy 且age=20.
結論:
Java中參數傳遞的都是值,對應基本類型,傳遞的是原值的拷貝;對於類類型,傳遞的是引用即地址的拷貝.
對於函數對參數的改變是否會影響原值的問題:值類型自然不會影響到原值.而對於類類型要看改變的是參數的地址還是值,如果是前者,參數和原引用指向了不同的地址,它們自然脫離了關系;如果是後者,修改的實例就是原引用指向的實例,這當然對原值進行了修改.
『捌』 java的類型參數是什麼意思
應該是泛型中提到的一個概念,<T> 表示傳入任意參數,在給一個泛型類初始化的時候我們要給它傳入具體的值,一般是一個類型,如String,Integer或空褲彎者是一個java bean類型的數據,這時候,String是作為一個參數傳過去的,但它表示的是一個字元串類型,也就是傳入了String類型的參數。此時String就是一個參數,一個類型參數。如List<string>純和 testList = new List<string>(); 一個泛型數組,我們要規定該list中只能傳入字元串怎麼辦,這時就給他傳入一個String類型參數,只要傳入斗悶其他類型就會在編譯期報錯,這也是泛型的一個優點。