導航:首頁 > 編程語言 > java傳遞類型參數

java傳遞類型參數

發布時間:2023-11-13 05:53:26

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 string 類型 作為參數是什麼傳遞

如果你認為arrayPassTest 函數中,s是作為值傳遞,而ss是作為引用傳遞,所以有這樣的輸出結果,也不算錯誤,但是決對沒有真正理解裡面的原因。在這里,String 類型的傳遞是引用傳遞,也即是地址傳遞。這個是毋庸置疑的。因為在java里,String是對象類型,作為參數肯定是引用傳遞。之所以有值傳遞的效果,是因為Stirng內部實現時,是用char[] 來存儲字元串的,所以String相當於char[]的包裝類,那java中,包裝類的一個特質就是值操作時體現對應的基本類型的特質。

Ⅲ java 中怎樣實現類類型作為參數傳遞

直接把參數類型定義為對應的類,就是類類型。

1、定一個類

publicclassA{//定義一個類A
}

2、定一個方法,類A作為參數傳遞

publicclassB{//定義一個類B
publicvoidshow(Aa){//類作為參數傳遞
}
}

Ⅳ java方法參數怎麼引用傳遞boolean

Java中的參數傳遞:分為值傳遞和引用傳遞
但本質上,Java中只有值傳遞。引用傳遞,其實可以理解為傳的是類似指針的東西。
值傳遞就是把基本變數的值拷貝一份,傳遞這個拷貝。引用傳遞則是傳遞的引用的地址,也就是該變數在內存空間的地址。

1.值傳遞

只有基本數據類型採用值傳遞,特點是傳遞的是值的拷貝,傳遞完後兩者就沒有關系了。也就是說方法內和方法外的值互不相干

基本數據類型:
·整型:int,long,byte,short
浮點型:float,double
字元型:char
布爾型:boolean
註:8種基本數據類型以外的數據類型都為引用類型。

2.引用傳遞

指的是在方法調用時,傳遞的參數是按引用進行傳遞,其實傳遞的引用的地址,也就是變數所對應的內存空間的地址。
傳遞的是一個拷貝,即副本。也就是說,對於一個參數傳遞,存在兩個地址指向同一個內存空間。這里我們可以用內存分配示意圖來體現

3.String類型傳遞

先說結論,String類型傳遞與基本數據類型的傳遞效果相似。
說明:
String類對象一旦創建,其內容不可更改:
String類的所有方法都不會改變String類對象內容,要改變String類對象的值就必須創建一個新的String對象。
也就是說,當進行參數傳遞時,如果方法內對String類對象的值進行了修改,那麼實際上是創建了一個新的String類對象,然後讓原來的變數指向它而已。但是這個「原來的變數」是一份拷貝副本,只是一開始創建的時候與主方法中的傳遞的值相同而已,現在改變之後,兩者就毫無關系了。

Ⅳ java 參數傳遞問題

這是java方法參數傳遞的機制
前面那個圖傳遞的是值的副本,無論在方法內部怎麼變換,改變的只是它的副本,而它本身在main方法中並沒有發生任何變化。所以不會交換。
而數組,參數傳遞的是引用的副本。就是說棧里存放的是一個引用,這個引用指向堆里的數組數據。而方法傳遞就傳遞這個引用的副本,這個副本一樣指向堆里的數組的數據。
在方法中按照引用的副本查找到數組並把它的數據交換了,直接對堆中的數據做了變化。所以出了這個方法,在原引用指向的堆內的數據已經發生了變化。

Ⅵ java中 數組可以作為形式參數傳遞到調用的方法中嗎要怎麼操作

可以,操作代碼如下:

public class ArrTest{

public static void doTest(String[] args){

for(int i=0;i<args.length;i++){

System.out.println(args[i]);

}

}

public static void main(String[] args){

String[] testArr = {"a","b","c","d"};

ArrTest.doTest(testArr );

}

}

(6)java傳遞類型參數擴展閱讀:

把數組作為參數傳入一個方法,在該方法中對數組進行一些操作:如果僅僅是插入數據項等一般操作,那麼該操作會影響到數組本身;反之,如調整數組大小、對數組賦值等操作,則對數組本身沒有影響。

例子:

public class Tester {<br data-filtered="filtered">

public static void counter(int count) {<br data-filtered="filtered">

count = 2;<br data-filtered="filtered">

}<br data-filtered="filtered">

<br data-filtered="filtered">

public static void changeA1(int[] ints) {<br data-filtered="filtered">

int[] temp = { 4, 5, 6 };<br data-filtered="filtered">

ints = temp;<br data-filtered="filtered">

}<br data-filtered="filtered">

<br data-filtered="filtered">

public static void changeA2(int[] ints) {<br data-filtered="filtered">

ints[0] = 4;<br data-filtered="filtered">

ints[1] = 5;<br data-filtered="filtered">

ints[2] = 6;<br data-filtered="filtered">

}<br data-filtered="filtered">

<br data-filtered="filtered">

public static void main(String[] args) {<br data-filtered="filtered">

// Output: 1<br data-filtered="filtered">

// 基本數據類型沒有改變。<br data-filtered="filtered">

int count = 1;<br data-filtered="filtered">

counter(count);<br data-filtered="filtered">

System.out.println("count: " + count);<br data-filtered="filtered">

<br data-filtered="filtered">

<br data-filtered="filtered">

int[] ints = { 1, 2, 3 };<br data-filtered="filtered">

<br data-filtered="filtered">

// Output: 1, 2, 3<br data-filtered="filtered">

// 對數組賦值,不會改變原始數組。<br data-filtered="filtered">

changeA1(ints);<br data-filtered="filtered">

for (int i = 0; i < ints.length; i++) {<br data-filtered="filtered">

System.out.print(ints[i] + " ");<br data-filtered="filtered">

}<br data-filtered="filtered">

<br data-filtered="filtered">

// Output: 4, 5, 6<br data-filtered="filtered">

// 可以對數組插入新的數據項。<br data-filtered="filtered">

System.out.println();<br data-filtered="filtered">

changeA2(ints);<br data-filtered="filtered">

for (int i = 0; i < ints.length; i++) {<br data-filtered="filtered">

System.out.print(ints[i] + " ");<br data-filtered="filtered">

}<br data-filtered="filtered">

}<br data-filtered="filtered">

}

Ⅶ java 需要傳遞類對象為參數的時候,幾種方法

下面給你舉例3種方法:

1、直接抽象類

對象 = new 抽象類()

{

//重寫此抽象類的抽象方法

};

2、抽象類

對象 = new 子類();

介面/實現類 對象= new 實現類()

class 子類 extends 抽象類{

//實現此抽象類的抽象方法即可。

}

class 實現類 implements 介面{

//實現此介面的抽象方法即可

}

3、直接把對象創建出來,比如在參數中需要用到某個類對象的時候,除了上述方法以外,也可以直接把此對象創建出來。

public void method(class obiect,,);

()中就可以這么寫

(new (抽象類/介面(){

//在這實現抽象方法

}))

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

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

Ⅸ Java中函數參數的傳遞是怎樣進行的

java中的參數傳遞比較簡單,都是值傳遞,沒有引用的說法,就算是對象也是將其引用的地址傳遞過去,不想。net還有引用的說法。

閱讀全文

與java傳遞類型參數相關的資料

熱點內容
少兒計算機編程培訓無聊嗎 瀏覽:587
安卓界面更新時點擊卡頓如何解決 瀏覽:771
日本十大漫畫app哪個好用 瀏覽:876
做系統選擇哪個文件夾 瀏覽:283
如何登陸mc伺服器 瀏覽:799
華為無法定位伺服器地址 瀏覽:961
編譯原理第三版陳火旺課本圖片 瀏覽:566
cad用什麼解壓縮軟體 瀏覽:715
編譯的函數模版 瀏覽:359
加密貨幣利率改變 瀏覽:226
復雜網路案例python 瀏覽:296
死命令的意思 瀏覽:689
哪個app可以聽日語電台 瀏覽:103
谷輪壓縮機15hp 瀏覽:289
python任意整數冒泡降序 瀏覽:30
醫保卡的錢哪個app能看到 瀏覽:576
主伺服器崩潰如何進行域遷移 瀏覽:317
學安卓用什麼語言好 瀏覽:78
qt命令行 瀏覽:800
慕課app班級在哪裡 瀏覽:140