初學者程式設計師最常問的問題是Java中參數是如何傳遞的。通常,程式語言使用按值傳遞和按引用傳遞來將參數傳遞給方法。然而,Java 並不支援這兩種方法,而是使用按值傳遞來傳遞原始類型和引用類型值。在本文中,我們將了解透過範例程式按值傳遞參數。
將參數傳遞給 Java 中的方法
讓我們先從了解Java的儲存機制開始討論。引用變數、方法和類別的名稱儲存在堆疊中,它們的值儲存在堆中。但是,基元及其值直接儲存在堆疊記憶體中。
如前所述,Java 僅支援基本型別和參考型別的值傳遞,這表示當呼叫方法時,每個參數值的副本都會傳遞給該方法
對於 int、double 和 Boolean 等基本型,參數的值與變數的原始值相同。例如,如果我們有一個值為 10 的變數“x”,並且將“x”作為參數傳遞給方法,則該方法會收到原始值 10 的副本作為其參數。
由於參考變數儲存在堆疊中,因此對於陣列、物件和字串等參考類型,參數的值是給定變數的參考或位址。例如,如果我們有一個元素為{1, 2, 3}的數組'arr',並將'arr'作為參數傳遞給一個方法,那麼該方法將接收到'arr'的引用或地址的副本作為其參數。
讓我們討論一些與 Java 中參數傳遞相關的術語
#使用者定義方法
方法是可以重複使用多次以執行單一操作的程式碼區塊。它節省了我們的時間,也減少了程式碼的大小。
文法
accessSpecifier nonAccessModifier return_Type method_Name(Parameters) { // Body of the method }
這裡,
accessSpecifier - 用於設定方法的可存取性。它可以是公共的、受保護的、預設的和私有的。
nonAccessModifier - 它顯示方法的附加功能或行為,例如靜態和最終。
return_Type - 方法將傳回的資料類型。當方法不回傳任何內容時,我們使用 void 關鍵字。
參數 vs 參數
參數 - 是在方法定義期間傳遞的命名變量,用作參數的佔位符。他們實際上將參數導入到指定的方法中。它們允許方法被泛化。這裡,泛化意味著我們可以根據需要對各種資料重複使用單一方法。
參數 - 是方法呼叫時傳遞的實際值。它們必須與方法定義中傳遞的參數類型相符。
傳值方式
透過這種方式傳遞參數,參數值的副本會傳遞給給定的方法。此方法可以修改副本,但不能影響參數的原始值。
透過引用傳遞
透過這種傳遞參數的方式,參數的參考或位址被傳遞給給定的方法。此方法可以透過引用修改參數的原始值
Java 程式顯示參數傳遞
方法
定義兩個使用者定義的方法。 “changeVal()”方法用於修改原始類型,“changeAray()”方法用於修改引用類型。
在main()方法中,宣告並初始化一個整數型別值和一個參考型別值。
現在,呼叫這些使用者定義的方法來執行操作並退出
#範例
import java.util.*; public class ParameterPassing { public static void changeVal(int n) { n = n * 2; // modifying value System.out.println("Inside method: n = " + n); } public static void changeAray(int[] a) { a[0] = a[0] * 2; // modifying value System.out.println("Inside method: a = " + Arrays.toString(a)); } public static void main(String[] args) { // for the Primitive type int val1 = 10; System.out.println("Before calling changeVal method: val1 = " + val1); changeVal(val1); // calling the method System.out.println("After calling changeVal method: val1 = " + val1); // for Reference type int[] aray = {1, 2, 3}; System.out.println("Before calling changeAray method: arr = " + Arrays.toString(aray)); changeAray(aray); // calling the method System.out.println("After calling changeAray method: arr = " + Arrays.toString(aray)); } }
輸出
Before calling changeVal method: val1 = 10 Inside method: n = 20 After calling changeVal method: val1 = 10 Before calling changeAray method: arr = [1, 2, 3] Inside method: a = [2, 2, 3] After calling changeAray method: arr = [2, 2, 3]
正如您在輸出中看到的,對於原始類型“val1”,在呼叫“changeVal”方法後其值不會改變。對於引用類型“arr”,在呼叫“changeAray”方法後,其值會發生變化。
結論
在本文中,我們學習了使用者自訂方法,並透過一個範例討論了在Java中如何傳遞方法參數。將引用類型的值作為參數傳遞與原始類型不同。 Java僅支援對非原始類型的參考進行傳遞,以修改它們的狀態,而不是它們的身份。
以上是在Java中,參數是如何傳遞的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver Mac版
視覺化網頁開發工具