① java 方法 傳參
在定義方法的時候,方法的參數叫形參(形式參數),在調用方法的時候,給方法傳遞的參數叫實參(實際參數),你的寫法有問題,在調用abc方法的時候,可以直接把45寫在方法後面(直接寫45需要類型轉換,否則報錯),也可以把45先賦值給一個變數,然後把變數當成參數傳給abc方法,不能又寫變數名,又寫45啊,標准寫法如下:
byte a=45;
abc(a);//或者是abc((byte)45)
public static void abc(byte a){
}
② Java中的 參數傳遞問題
在main函數中,首先給str1復制列印
然後在func函數中,將str1傳遞進去,而這的str1隻是func函數的參數 只在func裡面起作用
所以在以下各列印的時候,列印的依然是主函數mian裡面的hello
③ java 參數傳遞 規則
簡言之:Java都是值傳遞(pass-by-value)
在Java中,無非就是兩種類型,即基本類型和從Object繼承下來的對象類型,而對象類型又包括String這種一旦初始化就不可改變內容的類型和BufferString這種可以初始化後可
以改變內容的類型。
然後看一下代碼示例:
java 代碼
1.package test;
2.
3.public class Test {
1. public static void main(String args[]) {
2. Integer interger1, interger2;
3. int i, j;
4. interger1 = new Integer(10);
5. interger2 = new Integer(50);
6. i = 5;
7. j = 9;
8. System.out.println("Before Swap, Interger1 is " + interger1);
9. System.out.println("Before Swap, Interger2 is " + interger2);
10. swap(interger1, interger2);
11. System.out.println("After Swap Interger1 is " + interger1);
12. System.out.println("After Swap Interger2 is " + interger2);
13. System.out.println("Before Swap i is " + i);
14. System.out.println("Before Swap j is " + j);
15. swap(i, j);
16. System.out.println("After Swap i is " + i);
17. System.out.println("After Swap j is " + j);
18.
19. StringBuffer sb = new StringBuffer("I am StringBuffer");
20. System.out.println("Before change, sb is <" + sb + ">");
21. change(sb);
22. System.out.println("After change sb is <" + sb + ">");
23. }
24.
25. public static void swap(Integer ia, Integer ib) {
26. Integer temp = ia;
27. ia = ib;
28. ib = temp;
29. }
30.
31. public static void swap(int li, int lj) {
32. int temp = li;
33. li = lj;
34. lj = temp;
35. }
36.
37. public static void change(StringBuffer ia) {
38. ia.append(", but my content can be changed");
39. //ia = new StringBuffer(",but my content can be changed");
40. }
41.}
42.
輸出:
Before Swap, Interger1 is 10
Before Swap, Interger2 is 50
After Swap Interger1 is 10
After Swap Interger2 is 50
Before Swap i is 5
Before Swap j is 9
After Swap i is 5
After Swap j is 9
Before change, sb is <I am StringBuffer>
After change sb is <I am StringBuffer, but my content can be changed>
這很好解釋,對於基本類型諸如int,傳遞進去的是存放int值的「內存單元」的一個,所以函數swap裡面的int和外面的int根本就不是一個東西,當然不能反射出去影響外面
的int。而對於對象類型,我們同樣可以這樣認為,傳遞進去的是存放對象類型的指針的「內存單元」一個(雖然Java裡面沒有指針的概念,但這並不妨礙我們理解)。這樣,
在swap函數裡面,對其指針本身的值做任何操作當然不會影響外面的Integer,因為interger1和interger2的「內存單元」裡面的值是不變的,其指向的對象類型也是沒有變的。
然後這里需要說明一個問題,就是StringBuffer這種類型的對象了。因為其內容是可以改變的,所以change函數裡面的「指針」通過類似「*」的操作,改變了StringBuffer對象的
本身,就顯而易見了。(StringBuffer對象本身只有一個副本)
④ Java中如何傳值
可以通過參考傳值,如下:
publicclassTest{
publicvoidfunction(inta){}
publicstaticvoidmain(String[]args){
Testtest=newTest();
inta=1;
test.function(a);
}
}
⑤ Java編程中參數傳遞
兩個情況:
1、args的長度不等於3,退出。
2、args的長度等於3,但不會進for循環,因為x已經等於0是不可能大於3的。
(x=0,還x>args.length??那args必須比0小才行啊!)
這要看args的長度來判斷了,你這樣斷章起義很難判斷啊!樓主!
⑥ java中參數傳遞方式
當一個對象被當作參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後的結果,那麼這里到底是值傳遞還是引用傳遞? 是值傳遞。Java 編程語言只由值傳遞參數。當一個對象實例作為一個參數被傳遞到方法中時,參數的值就是對該對象的引用。對象的內容可以在被調用的方法中改變,但對象的引用是永遠不會改變的。
⑦ java 代碼中的參數傳遞
1.
swap(intobj_a,intobj_b); 調用了public static void swap (interger x , interger y ) 這個方法
說明,Integer雖然是int的封裝類型,而且java本身的裝箱拆箱可以讓他用起來像是一個一樣,但是他們還是不同的東西,還是有區分滴
2.
方法體里的內容是將x,y的值進行交換,也許你會想著,既然是對象進行傳遞,那就是引用傳遞咯,引用傳遞的話……,想的無比之遙遠,不好意思,x,y交換以後intobj_a,intobj_b的值不變,
x,y分別是另外兩個變數而已,他們分別拿的是實參的存儲地址而已
你吧x的地址給了temp,x拿了y的地址,y拿了temp的地址
那時x,y的事兒,跟外面的實參沒有關系
如何才能操作到外面的實參呢,,,根據傳過來的對象本身的方法來改變
就是我改變這塊兒內存區域裡面的東西,就改了
⑧ JAVA的參數傳遞
change(int a)
p.change(pass);
雖然你吧PASS當作參數傳遞進去了,但是方法在執行上實際在內存中新建立一個對象a 並且a=100
並且你的程序中沒有p=a或者p=100
所以P的內容實際上還是50
⑨ java中對象類型的參數傳遞
因為Java里方法參數的傳遞實際上只有值傳遞(不管基本類型或引用類型),對基本類型來說是把其值傳遞了一份過去,而對引用類型來說實際是把引用地址的值復制一份傳遞了過去。
另外,只有用new方法創建的對象的實際成員數據是存放在堆裡面的,而其他方法內部定義的變數都存放在棧中,一旦出了方法的范圍就失效,會被內存回收。
知道了以上兩點,就可以分析了,swap方法里t1,t2,temp都是存放在棧里的只保存引用類型地址的變數,不管他們怎麼交換,實際上不會改變堆裡面的內容,而main方法里的time1, time2的引用類型雖然其地址仍在棧中,而實際數據在堆中,程序中沒有任何改變其內容的語句,因此,不會產生交換。
⑩ Java方法的參數傳遞
對象型類型是引用傳遞,傳遞的是對象的地址。值被修改後原來的變數也會被修改。