導航:首頁 > 編程語言 > java傳值和傳址

java傳值和傳址

發布時間:2025-01-03 02:38:06

java基礎問題,到底是值傳遞還是引用傳遞

傳遞的是對象沒錯,問題出在str = "修改後的str"; 這一句上。
這句話表示新建一個對象,內容是「修改後的str」,然後賦給str
因此,原對象內容並沒有發生變化。這也是java和c++不同的地方。

String[]和int[]中存放的是指向對象的地址,因此修改後它的值可以返回到主函數中。這個是毋庸置疑的。
數組也是一樣,因為數組傳遞的是地址(我這么認為)因此,你對對象的改變就會反應到主函數中。

你採用的String 和 String[]變數的區別是:String變數傳遞的是一個對象,當它被賦予一個新對象內容時,原對象不會發生變化。而String[]是一個數組,傳遞的是對象的地址。新對象賦給新地址,地址沒有變,但對象變了,因此String【】內容變了。

② java參數在方法內部可以獲得正確值,但是引用方法後得不到參數的值

傳值方式不會影響數據,執行完後它對傳入的值沒有任何影響;

JAVA參數的兩種方式:
1、傳值——傳的是一個復制的值進去,不會影響到數據本身
2、傳引用(傳址)——即把這個對象的引用或地址傳進去,只要方法裡面的任何操作都會影響到這個對象的本身。

③ JAVA數組地址傳遞問題!

在Java中,參數的傳遞嚴格意義上講都是傳值的,只不過簡單很容易分清轎宴楚。而對於對象,有些復雜。

首先,在Java中是先聲明一個類的變數。然後,用類生成一個類的實例,也就是在內存中的類的實例區域,最後把這個區域的指針賦給類的這個變數。注意,變數中存的是指向對象的指針。

若是按傳址傳參數,是要改變這個對象變數所指的內存對象區域,也就是要在方法內把新對象賦給方法外的對象變橋羨量。但是,這在Java中辦不到。因為Java是把對象變數中的對象指針傳入方法,並沒有把變數本身的地址傳入方法;在方法中,會生成新變數接受這個對象的指針。所以,在Java方法中,可以改變當前對象中的內容,卻不能改變方法外邊變數的值,即所指向的對象。對於傳值、傳址的分析就是為了在閉消銀應用中少犯錯誤。其他是次要的。

明白沒有,是傳值而不是傳值的地址!地址沒有變,C當然不變了!

④ java 里為什麼不能改變參數的值,但能改變參數的屬性值

參數有兩種方式,普通類型如int,String等為傳值,其他的如JAVA對象,數組,集合等均為傳址。

傳值方式只是把值傳入參數,在方法里的任何動作與源無關,源的值不變;

傳址方式是把源對象的地址傳入方法,在方法里的動作都是直接操作源對象,所以能改變其值。

⑤ Java 傳遞參數時,傳遞一個變數快還是傳遞一個實體類

傳遞實體類參數是傳址調用
傳基礎類型參數是傳值調用
傳址調用要快於傳值調用
傳值調用會先申請一塊空間將參數的值存起來,以便調用
所以方法調用不能對實參做出任何修改
傳址調用得到參數時直接使用指向的內存地址,少了分配空間的這一步
方法可以對地址所指向的數據進行修改
所以傳址調用速度快
可以網路一下 傳值調用快還是傳址調用快

⑥ JAVA中map中存儲list集合問題。

因為map添加list是對list的引用,相當於傳址!明白傳值和傳址的區別,你就可以明白

閱讀全文

與java傳值和傳址相關的資料

熱點內容
maya粒子表達式教程 瀏覽:84
抖音小視頻如何掛app 瀏覽:283
cad怎麼設置替補文件 瀏覽:790
win10啟動文件是空的 瀏覽:397
jk網站有哪些 瀏覽:134
學編程和3d哪個更好 瀏覽:932
win10移動硬碟文件無法打開 瀏覽:385
文件名是亂碼還刪不掉 瀏覽:643
蘋果鍵盤怎麼打開任務管理器 瀏覽:437
手機桌面文件名字大全 瀏覽:334
tplink默認無線密碼是多少 瀏覽:33
ipaddgm文件 瀏覽:99
lua語言編程用哪個平台 瀏覽:272
政采雲如何導出pdf投標文件 瀏覽:529
php獲取postjson數據 瀏覽:551
javatimetask 瀏覽:16
編程的話要什麼證件 瀏覽:94
錢脈通微信多開 瀏覽:878
中學生學編程哪個培訓機構好 瀏覽:852
榮耀路由TV設置文件共享錯誤 瀏覽:525

友情鏈接