導航:首頁 > 編程語言 > java參數傳遞對象

java參數傳遞對象

發布時間:2025-09-23 23:57:17

1. 在java中傳遞參數的方法有幾種做簡要的說明

傳遞參數的方法分為兩種:
1.值傳遞
2.引用傳遞

2. Java參數傳遞

這是因為java中只有值傳遞,沒有引用傳遞。
變數名str是引用,它始終指向「hello」字元串。
你的changeStr()不會修改str指向「different」,因為java中只有值傳遞。

3. 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參數傳遞對象相關的資料

熱點內容
bgp伺服器和雲伺服器 瀏覽:435
Java程序設計應用教程 瀏覽:750
python數據報告 瀏覽:315
安卓大頭介面叫什麼 瀏覽:296
電腦進入命令系列怎麼退出 瀏覽:122
程序員事情少 瀏覽:212
java參數傳遞對象 瀏覽:700
ios百度網盤越獄解壓 瀏覽:13
汽車解壓辦案專員 瀏覽:636
pdf里的文件怎麼打開 瀏覽:311
python反向字典調過來 瀏覽:222
程序員20薪是什麼意思 瀏覽:533
倫敦銅交易哪個app好 瀏覽:581
命令行創建oracle實例 瀏覽:854
基於單片機的彩燈設計 瀏覽:640
php導出csv大數據 瀏覽:522
解壓包子能冷凍嗎 瀏覽:766
程序員優惠券怎麼解鎖 瀏覽:535
單片機sp意思 瀏覽:845
qq郵箱伺服器的地址是什麼格式是什麼 瀏覽:38