91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中方法參數傳遞機制的原理是什么

發布時間:2021-05-19 16:14:29 來源:億速云 閱讀:168 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關Java中方法參數傳遞機制的原理是什么,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

基本數據類型

基本數據類型,值傳遞的體現是數值的傳遞。

public class TransferTempTest {
  public static void main(String[] args) {
    //基本數據類型參數傳遞
    TransferTempTest test = new TransferTempTest();
    int num1 = 10;
    int num2 = 20;
    System.out.println("進行交換前:");
    System.out.println("num1 = " + num1 + ",num2 = " + num2);
    test.swap(num1, num2);
    System.out.println("交換之后:");
    System.out.println("num1 = " + num1 + ",num2 = " + num2);
  }
  public void swap(int a, int b) {
    int temp = a;
    a = b;
    b = temp;
    System.out.println("交換過程中:");
    System.out.println("num1 = " + a + ",num2 = " + b);
  }
}
//運行結果
進行交換前:
num1 = 10,num2 = 20
交換過程中:
num1 = 20,num2 = 10
交換之后:
num1 = 10,num2 = 20

整個過程的內存圖演示:

Java中方法參數傳遞機制的原理是什么

如圖所示:

  • 在堆內存中創建 TransferTempTest類型的對象,假設此時地址值時0x1177(只是假設),并讓棧內存中的引用變量test存儲0x1177,指向該對象。

  • 在棧內存中聲明兩個變量num1和num2,并為他們賦值10和20。這時可以看到打印的結果為:num1 = 10,num2 = 20

  • 程序繼續向下,進入swap方法,首先在棧區聲明兩個變量a和b,他們都是形參,這時將num1和num2的值分別傳入,此時如藍色字體所顯示,a=10,b=20。

  • 接著還是在棧區聲明一個名為temp的變量,這時執行的交換過程是在swap方法中,交換的變量其實是num1和num2的拷貝值,所以方法內打印:num1 = 20,num2 = 10

  • 最后,退出這個方法,局部變量銷毀,發現其實一頓操作,原先的值根本就沒有改變,打印結果和原先一樣:num1 = 10,num2 = 20

引用數據類型

基本數據類型,值傳遞的體現是地址值的傳遞。

public class TransferTempTest {
  public static void main(String[] args) {
  //引用類型參數傳遞
    DataTemp data = new DataTemp();
    data.a = 2;
    data.b = 4;
    System.out.println("進行交換前:");
    System.out.println("data.a = " + data.a + ",data.b = " + data.b);
    data.swapClass(data);
    System.out.println("進行交換后:");
    System.out.println("data.a = " + data.a + ",data.b = " + data.b);
  }
}
class DataTemp {
  int a;
  int b;

  public void swapClass(DataTemp data) {
    int temp = data.a;
    data.a = data.b;
    data.b = temp;
    System.out.println("交換過程中:");
    System.out.println("data.a = " + data.a + ",data.b = " + data.b);

  }
}
//運行結果
進行交換前:
data.a = 2,data.b = 4
交換過程中:
data.a = 4,data.b = 2
進行交換后:
data.a = 4,data.b = 2

整個過程的內存圖顯示:

Java中方法參數傳遞機制的原理是什么

如圖所示:

  1. 在堆內存中創建DataTemp類型的對象,并讓棧內存中的引用變量data存儲0x7788(假設地址值),指向該對象,實例變量a和b的初始值都是0。

  2. 讓data.a=2,data.b=4,如藍色字體顯示,這時打印:data.a = 2,data.b = 4

  3. 進入swapClass方法,首先在棧區聲明形參變量data,將原來的data的地址值傳入,紅黑兩個data不是同一個!!,紅色data只是黑色data的拷貝值,且拷貝的是地址值。這時兩個data指向同一片堆區內存,如紅色箭頭顯示。

  4. 接著還是在棧區聲明一個名為temp的變量,參與交換操作,這時操作的是堆區的數據,所以方法里顯然打印:data.a = 4,data.b = 2

  5. 最后,退出這個方法,局部變量銷毀,執行的交換過程雖然是在swapClass方法中,但引用變量傳入形參傳遞的是地址值,意味著,這時的交換操作直接對堆區對象生效,所以最終交換成立:data.a = 4,data.b = 2

綜合練習

package com.my.pac05;

public class TransferTest {
  public static void main(String[] args) {
    TransferTest test = new TransferTest();
    test.first();
  }

  public void first() {
    int i = 5;
    Value v = new Value();

    v.i = 25;
    second(v, i);
    System.out.println(v.i);
  }

  public void second(Value v, int i) {
    i = 0;
    v.i = 20;
    Value val = new Value();
    v = val;
    System.out.println(v.i + " " + i);
  }
}

class Value {
  int i = 15;
}
//運行結果
15 0
20

整個過程的內存圖顯示:

Java中方法參數傳遞機制的原理是什么

常用的java框架有哪些

1.SpringMVC,Spring Web MVC是一種基于Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架。2.Shiro,Apache Shiro是Java的一個安全框架。3.Mybatis,MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架。4.Dubbo,Dubbo是一個分布式服務框架。5.Maven,Maven是個項目管理和構建自動化工具。6.RabbitMQ,RabbitMQ是用Erlang實現的一個高并發高可靠AMQP消息隊列服務器。7.Ehcache,EhCache 是一個純Java的進程內緩存框架。

關于Java中方法參數傳遞機制的原理是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新竹县| 朝阳市| 永寿县| 进贤县| 利辛县| 舒城县| 嵩明县| 南川市| 巴林右旗| 黄陵县| 汝州市| 吉木乃县| 禹城市| 比如县| 呼玛县| 新干县| 莱芜市| 买车| 芮城县| 瑞安市| 舟山市| 庆安县| 公主岭市| 池州市| 讷河市| 平乡县| 崇文区| 民丰县| 黄平县| 厦门市| 怀安县| 和平县| 鸡东县| 梓潼县| 乐亭县| 噶尔县| 怀来县| 会昌县| 陆河县| 江孜县| 维西|