導航:首頁 > 編程語言 > java如何引用傳遞

java如何引用傳遞

發布時間:2023-06-08 16:08:45

java中的引用傳遞是什麼

值傳遞:(形式參數類型是基本數據類型):方法調用時,實際參數把它的值傳遞給對應的形式參數,形式參數只是用實際參數的值初始化自己的存儲單元內容,是兩個不同的存儲單元,所以方法執行中形式參數值的改變不影響實際參數的值。

引用傳遞:(形式參數類型是引用數據類型參數):也稱為傳地址。方法調用時,實際參數是對象(或數組),這時實際參數與形式參數指向同一個地址,在方法執行中,對形式參數的操作實際上就是對實際參數的操作,這個結果在方法結束後被保留了下來,所以方法執行中形式參數的改變將會影響實際參數。


㈡ java 引用傳遞

因為字元串常來量與一般對象不同,源JVM(Java虛擬機)將字元串常量創建在一個Pool裡面,所以"111"和「2222222」都在這個Pool里。main裡面的str指向"111",而myTest裡面的局部變數先指向"111",後指向"22222222",當myTest調用結束,該變數消亡,但main裡面的str並未改變,仍然指向"111"。

如果是一般對象,不同在於一般對象存在於heap memory中,當調用myTest時,myTest中的局部變數也指向該對象,如果在myTest中修改對象中的某個instance variable的值,返回後,因為main裡面的str指向heap中同一對象,自然該值也改變了。

㈢ Java中怎麼引用傳遞

//Java中怎麼引用傳來遞,在main中的代源碼
public static void main(String[] args) {
Ldc l = new Ldc("你好");//這里的值可以改
System.out.println(l.str);
}
//----------------------------------------------------------------------------------------------------
//新建一個Ldc類代碼如果

public class Ldc {
public String str ="";
Ldc(String str){
this.str="我在這里返回你傳遞來的參數:"+str;
}
}

㈣ java類方法如何實現引用傳遞和值傳遞

參數是基本類型就是傳值,傳對象就是引用傳遞。

swap(Integer x, Integer y)可以傳遞引用,但是沒辦法實現交換。這跟Integer的實現方式有關。所以不是引用傳遞就一定能改變外面的值。

下面是引用傳遞,交換的情況,又臭又長。

classUntitled{

intneedFix;


publicstaticvoidswap(Untitledx,Untitledy){
inttemp=x.needFix;
x.needFix=y.needFix;
y.needFix=temp;

}
publicstaticvoidmain(String[]args){
Untitle1=newUntitled();
Untitle2=newUntitled();
u1.needFix=3;
u2.needFix=4;
swap(u1,u2);
System.out.println(u1.needFix+","+u2.needFix);
}
}

另外,你可以考慮一下引用傳遞,不過也是一種傳值,java裡面沒有事實上的指針。直接交換引用指向的對象是沒有作用的。

Untitledtemp=x;
x=y;
y=temp;

無效。

㈤ 在JAVA中怎麼可以使變數進行引用傳遞啊

首先,這個類裡面的方法沒用:
class Cheshi2
{
Cheshi2(Integer res)
{
res= new Integer(40);
}
}
我知道你以為引用可以這樣做,但事實是:
執行Cheshi2 c2=new Cheshi2(c1.num);調用
Cheshi2(Integer res)
{
res= new Integer(40);
}
Integer res是新建的一個對象(這是函數調用的規則之一),只是它的值是c1.num,它和c1.num是兩個不同的東西!你改變res:res= new Integer(40);讓res指向一個不同的對象,但是c1.num沒變啊,它還指向原來的num = new Integer(20);.

㈥ Java String引用傳遞問題

了解數據在堆棧內存中的存儲,這道問題就可以解了。
1.String對象傳入方法後,str2是局部變數,方法結束之後,局部變數值會在緩沖區中。但是並沒有修改成員變數str1的值,而輸出的仍然是str1的值,"hello"。(局部變數和成員變數是不同的變數,即使名字相同)
2.至於第二個因為類的實例化,對象可以指向該類地址,可以訪問該類的成員變數。對象指向成員變數temp,調用方法tell方法時,傳入的是Ref2對象的地址。該地址可以找到Ref2的成員變數temp。然後把"xueyuan"賦給temp,由此temp的值已經改變,方法調用結束之後,輸出的是Ref2類的已經改變值的成員變數

㈦ java string怎麼傳引用傳遞

你是C/C++或是VB轉過來的嗎?在Java中過多考慮引用(指針)和值之間的關系是步入歧途,這正是Java的設計者極力避免你考慮的問題。
你需要明白的是:
1、Java中所有方法的參數的傳遞都是「值傳遞」;
2、Java中所有對象類型的變數的「值」,本質上說,包含了Java堆中的實際對象的地址,你可以大體認為Java的變數對應了C/C++中的指針(其實這裡面有更復雜的機制)。事實上,Java並不像C/C++一樣明確的區分「值語義」與「引用語義」,Java棧中也不會存放任何對象的實體(這點與C/C++不同,C/C++棧中可以存放對象實體),所有的Java對象都是在堆中。

概念上的區別在於,我這里提到的「變數」是指Java棧中的內容,對應你說的「引用」;我提到的「對象」是指Java堆中的實體,對應你說的「值」。而一般Java教材中提到的「值傳遞」,是指這些「變數」的內容的傳遞,不是Java堆中的對象實體的傳遞。

你用字元串來做實驗,並推廣為所有Java對象的做法,並不是特別合適。Java的String類型有特殊的處理:所有編譯期認識的字元串,都會被放到常量池,於是下面的語句:
a = "s";
b = "s";
a和b並不像其它對象一樣有創建的動作,都是直接指向常量池中的"s",所以你可以得到a==b。而下面的語句:
a = new String("s");
b = new String("s");
是分別在Java堆中創建了2個對象,此時a!=b。

本質上說,對於基本數據類型(整數、字元等),Java的符號==,用於判斷二者的值是否相等;對於對象類型,Java的符號==,用於判斷兩個變數是否是「同一個對象」,equals()方法才是用於判斷兩個對象是否相等。

你希望實現的swap邏輯,在Java中通常認為是無法實現的。拿你這個例子來說,swapValue()中的tmpValue無論怎麼更改,只是改變tmpValue自己的內容(即不斷指向不同的對象),並不會改變value中的內容(始終指向同一個對象)。這也是為什麼Java最初說自己永遠是值傳遞。你只有改變tmpValue指向的對象的值(通過調用這個對象的方法或是更改它的屬性),使用value訪問時,才能看到這些改變。

為了彌補這個缺陷,C#才加入了ref關鍵字,允許傳入變數的引用(如果參考C/C++,C#傳遞的實際是二級指針,它的內容是棧中的變數的地址)。

㈧ 請問在java中如何實現C++語法里的按引用傳遞參數

Java裡面不像C++/C那樣,Java只有對象類型參數才是傳地址的,Java的基礎類型變數做參數的時候,都只是傳值。

解決方法是,用Java的類做函數的參數類型。

如下是我寫的一個例子說明:
文件名:byRefVariable.java
//--------------------------------------
public class byRefVariable
{
public static void main(String args[])
{
obj test=new obj();
System.out.println("沒有把test作實參傳遞給changeIt方法之前的test.var的值="+test.var);
changeIt(test);//坐實參傳遞到一個函數!
System.out.println("test作實參傳遞給changeIt之後"+test.var);
}
public static void changeIt(obj a)
{
a.var=12580;
}
}
class obj //我在這里定義了一個類。
{
int var=0;
}

閱讀全文

與java如何引用傳遞相關的資料

熱點內容
彩視製作教程 瀏覽:766
聖墟在哪個App看免費 瀏覽:395
網路哪些不能玩 瀏覽:868
probe315使用教程 瀏覽:646
數字電位器程序 瀏覽:198
c代碼整理 瀏覽:104
網路營銷具有什麼優勢 瀏覽:378
右下角網路連接不顯示寬頻連接 瀏覽:940
ps修改tif文件 瀏覽:580
預防醫學如何轉行做大數據 瀏覽:234
pdf文件變藍 瀏覽:309
怎麼在pdf文件上面用k寶簽名 瀏覽:213
如何知道表格里數據後面有空格 瀏覽:720
gee引擎更新系統找不到指定文件 瀏覽:802
貝殼網的數據刪除了如何找回 瀏覽:509
華為榮耀6x怎麼切換網路 瀏覽:418
手機里的pdf文件在哪放 瀏覽:889
java版貪吃蛇畢業論文 瀏覽:989
微信公共號郵箱 瀏覽:415
圖片寬度代碼 瀏覽:460

友情鏈接