java 值傳遞與地址傳遞(引用)的區別
JAVA傳遞引數有兩種方式:值傳遞和引用傳遞
- 值傳遞是傳遞資料:如基本資料型別都是值傳遞
- 引用傳遞是把形參和實參的指標指向了堆中的同一物件,物件的引用和陣列的引用。
注意:
實參,Java的基本資料型別,如int,double等在函式的引數傳遞時,傳遞的是副本。String也屬於這一範疇。
形參,而如果是物件,則傳遞的是引用。
如下程式碼例項:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
person p = new person();
p.name = "ken";
p.age = "12";
reset(p); // 傳遞的是p的指標地址,方法裡面在對p的屬性進行修改,方法結束後影響依然存在。
String name = p.name;
String age = p.age;
System.out.println(name + age);
// name=gg,age=223
setContentView(R.layout.main);
}
private void reset(person ap) {
ap.name="gg";
ap.age="223";
}
class person {
String name;
String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
相關推薦
java 值傳遞與地址傳遞(引用)的區別
JAVA傳遞引數有兩種方式:值傳遞和引用傳遞 值傳遞是傳遞資料:如基本資料型別都是值傳遞 引用傳遞是把形參和實參的指標指向了堆中的同一物件,物件的引用和陣列的引用。 注意: 實參,J
## 標題:指標的值傳遞與地址傳遞,全域性變數傳遞,與形參傳遞的區別與結果
標題:指標的值傳遞與地址傳遞,全域性變數傳遞,與形參傳遞的區別與結果 1.值傳遞與地址傳遞 下面看著段程式碼:void swap(int a, int b){ int t; t=a; a=b; b=t; } void swap1(int *p1,int *p2){ int t; t=*p
值傳遞與地址傳遞
作為開發人員,入門級的理解,就是值傳遞和地址傳遞的區別,這是C語言中的基礎。今天通過一個oc的demo理解一下面向物件中的值傳遞和地址傳遞,首先定義一個自定義類MyFunction,定義值傳遞和地址傳遞的方法 -(int)byValue:(int)x { x++; return x
C語言引數傳遞----值傳遞與地址傳遞
最近開始復(yu)習(xi)C語言,看到引數傳遞這裡,又遇到了以前一直沒有搞清楚的一個問題,我相信這個問題大家許多初學者也會遇到過,就是C語言函式的引數傳遞方式。 C語言中引數的傳遞有兩種方式: 1)值傳遞 2)地址傳遞 3)陣列作為函式引數 這裡用兩
徹底高清值傳遞與地址傳遞的區別
1. 考題一:程式程式碼如下:void Exchg1(int x, int y) { int tmp; tmp=x; x=y; y=tmp; printf(“x=%d,y=%d/n”,x,y)}void main(){ int a=4,b=6; Exchg1
物件作為引數的值傳遞與地址傳遞
1.沒有明確宣告為指標或者引用,都是值傳遞,會呼叫物件過載的=,建立新的物件。2.當指定為指標型別的時候為傳遞的是指標(地址),指定引數型別為引用的時候,傳遞的也是地址。#include<stdi
函式的值傳遞與地址傳遞--以輸入三個數並從小到大排列為例
一、值傳遞 #include <stdio.h> //自定義函式實現三個數從小到大排列 //值傳遞 //編者:wsg void sort(int a, int b, int c) { int t; if(a>b) { t = a;
Java靜態分派與動態分派(二)
xiang oid main isp 準備 center 使用 name 編譯過程 方法調用並不等於方法執行,方法調用階段唯一的任務就是確定被調用方法的版本(即調用哪一個方法),暫時還不涉及方法內部的具體運行過程。 在程序運行時,進行方法調用是最普遍、最頻繁的操作,但是Cl
java記憶體模型與執行緒(1)
一、處理器、快取記憶體、主記憶體之前的互動圖 二、Java記憶體模型 倆張圖之間的關係很清晰 一個處理器對應一個執行緒 一個快取記憶體對應一個工作記憶體 問題的關鍵點就在於:java執行緒之間與工作記憶體打交道,而不是主記憶體,工作記憶體之間沒有直接的關
java記憶體模型與執行緒(2)
一、原子性、可見性與有序性 1.原子性 原子性操作包括read、load、asign、use、store和write 更大範圍的原子性保證:lock和unlock(倆者未開放),monitorenter和monitorexit(隱式的使用synchronized)
Java反射機制與動態代理(一)
導讀: 1. 什麼是反射 2. 反射的基本使用 3. 反射的使用例項 一、什麼是反射? Java反射機制是在執行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個物件,都能夠呼叫它的任意一個方法和屬性;這
Java反射機制與動態代理(二)
導讀: 1. 代理模式 2. 靜態代理 3. 動態代理 4. 小結 一、代理模式 代理模式所涉及的角色有: 抽象主題角色:聲明瞭真實主題和代理主題的共同介面,這樣一來在任何可以使用真實主題的地方都可以使用代理主題。 真實主
JAVA過濾器(Filter)與攔截器(Interceptor)區別及關係
過濾器(Filter)與攔截器(Interceptor)區別: 1、過濾器是基於函式回撥,而攔截器是基於java的反射機制; 2、過濾器是servlet規範規定的,只能用於web程式中,而攔截器是在spring容器中,它不依賴servlet容器 3、過濾器可以攔截幾乎所有的
Java程式碼加密與反編譯(一):利用混淆器工具proGuard對jar包加密
Java 程式碼編譯後生成的 .class 中包含有原始碼中的所有資訊(不包括註釋),尤其是在其中儲存有除錯資訊的時候。所以一個按照正常方式編譯的 Java .class 檔案可以非常輕易地被反編譯。通常情況下,反編譯可以利用現有的工具jd-gui.exe或者jad.e
Cname與A記錄(Address)區別
需要 cor 解析 服務器 只需要 如果 and 多個 blog Cname與A記錄(Address)區別A記錄是解析域名到IP,Cname是解析域名到另外一個域名。一臺服務器可以布置多個網站,也可以有多個域名,如如域名A----->A記錄----->真正的服務
過濾器(Filter)與攔截器(Interceptor)區別
過濾器(Filter)與攔截器(Interceptor)區別 過濾器(Filter) Servlet中的過濾器Filter是實現了javax.servlet.Filter介面的伺服器端程式,主要的用途是設定字符集、控制權限、控制轉向、做一些業務邏輯判斷等。其工作原理是,只要你在web.xml檔案配置好要攔
Java中的值傳遞和地址傳遞(傳值、傳引用)
首先,不要糾結於 Pass By Value 和 Pass By Reference 的字面上的意義,否則很容易陷入所謂的“一切傳引用其實本質上是傳值”這種並不能解決問題無意義論戰中。 更何況,要想知道Java到底是傳值還是傳引用,起碼你要先知道傳值和傳引用的準確含義吧?可是如果你已經知道了這兩個名字的準確
java 值傳遞及地址傳遞(引用傳遞)
一直來覺得對值傳遞和地址傳遞了解的很清楚,剛才在開源中國上看到一篇帖子介紹了java中的值傳遞和地址傳遞,看完後感受頗深。下邊總結下以便更容易理解。 按照以前的理解,java中基本資料型別是值傳遞,物件是地址(引用)傳遞。給大家看個例子:
Interger是值傳遞還是地址(引用)傳遞?
首先,放一句話。引用型別都是傳遞引用。但是對於Integer這種包裝型別來說,可能會讓人產生誤區,比如看下面程式碼片段: Integer i = new Integer(1); Integer j = i; System.out.println(j
在彈框中獲取foreach中遍歷的id值,並傳遞給地址欄(方法2)
ges 應該 我們 png 地址欄 each 獲取 賦值 有時 1.php有時候我們需要再彈框中獲取foreach中遍歷的數據(例如id),在彈框中點擊按鈕並傳遞給地址欄跳轉。那麽應該怎麽做呢。第二種方法。 2. 可以在彈框中給出一個input hidden 點擊按鈕彈窗時