1. 程式人生 > >java 值傳遞與地址傳遞(引用)的區別

java 值傳遞與地址傳遞(引用)的區別

JAVA傳遞引數有兩種方式:值傳遞和引用傳遞

  1. 值傳遞是傳遞資料:如基本資料型別都是值傳遞
  2. 引用傳遞是把形參和實參的指標指向了堆中的同一物件,物件的引用和陣列的引用。

注意:
實參,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

CnameA記錄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 點擊按鈕彈窗時