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

溫馨提示×

溫馨提示×

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

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

Java參數的類型有哪些

發布時間:2021-08-23 11:40:34 來源:億速云 閱讀:352 作者:小新 欄目:編程語言

這篇文章主要介紹了Java參數的類型有哪些,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

簡述

調用方法的時候,有需要傳參數的情況。在Java中,參數的類型有基本類型和引用類型兩種。

一開始聽到一個說法,Java沒有引用傳遞,但是一直沒有太多的思考在上面,直到前不久玩數組的時候,突然間發現把數組引用變量作為參數傳遞到一個方法當中進行操作之后,再去訪問原數組,盡然改變了。于是乎,就想到了之前在C++里面學過的引用傳遞,突然有一種錯愕的感覺,就查了一些資料,探究當Java引用類型變量作為參數傳遞給方法的時候,到底是值傳遞還是引用傳遞。

結論:如果將Java引用類型變量作為參數傳遞給方法,是將引用變量的值傳遞給形參,而引用變量的值實際上就是引用對象在堆內存中的地址。也就是說,這個時候實參和形參指向了同一個對象,如果利用形參進行操作,操作的就是實參指向的對象,最后通過實參的那個引用訪問,自然是被形參操作過的結果。

基本類型參數

基本類型參數是典型的值傳遞,著名的案例就是更換兩個數的值。下面是這個問題的示例代碼:

public class Main {
	public static void main(String[] args) {
		int num1 = 11;
		int num2 = 22;
		System.out.println("Before the call: num1 is " + num1 + " and num2 is " + num2);
		swap(num1, num2);
		System.out.println("After the call: num1 is " + num1 + " and num2 is " + num2);
	}
	
	public static void swap(int num1, int num2) {
		System.out.println("num1 is " + num1 + " and num2 is " + num2 + " in method of swap.(before)");
		int tmp = num1;
		num1 = num2;
		num2 = tmp;
		System.out.println("num1 is " + num1 + " and num2 is " + num2 + " in method of swap.(after)");
	}
}

運行結果如下

Before the call: num1 is 11 and num2 is 22
num1 is 11 and num2 is 22 in method of swap.(before)
num1 is 22 and num2 is 11 in method of swap.(after)
After the call: num1 is 11 and num2 is 22

通過運行結果,可以清楚地知道,通過這樣的參數傳遞,交換的僅僅是形參的值,而main方法當中的兩個數的值并內有發生變化。這就是值傳遞的結果。

引用類型參數

通過一個數組引用演示引用類型參數的傳遞效果

public class ArrayTest {
	public static void main(String[] args) {
		int[] arr = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
		System.out.print("Before calling the inversion: ");
		for (int i : arr) {
			System.out.printf("%3d", i);
		}
		System.out.println();
		inversion(arr);
		System.out.print(" After calling the inversion: ");
		for (int i : arr) {
			System.out.printf("%3d", i);
		}
		System.out.println();
		
		setNull(arr);
		System.out.println("@" + arr);
	}
	public static void inversion(int[] arr) {
		int length = arr.length;
		for (int i = 0; i <= length / 2; i++) {
			int temp = arr[i];
			arr[i] = arr[length - i - 1];
			arr[length - i -1] = temp;
		}
	}
	
	public static void setNull(int[] array) {
		System.out.println("#" + array);
		array = null;
		System.out.println("$" + array);
	}
}

程序運行結果:

Before calling the inversion:   0  1  2  3  4  5  6  7  8  9
   After calling the inversion:   9  8  7  6  4  5  3  2  1  0
#[I@1d251891
$null
@[I@1d251891 

程序中,在main方法中定義了一個數組,并且在類中定義了一個將數組元素倒置的方法inversion(),這個方法需要傳入一個數組類型的引用。在main方法中調用這個方法,并將arr這個數組的引用作為參數傳遞給inversion方法,通過程序執行的結果,可以看到當inversion方法執行完畢,main方法中的arr數組的內容的確發生了倒置。

那么,這個時候是否就可以認為,引用類型的傳遞是引用傳遞而并非值傳遞呢?按照資料顯示的,引用類型的參數傳遞傳遞的是引用變量的值,有什么方法可以證明一下呢?setNull()方法提供了這樣的證明。

setNull方法的參數是數組的引用變量,程序中傳入的是arr.進入方法,首先打印了array,然后將它置空再打印一次,然后在main方法中,打印arr的地址。程序運行的結果表示,array置空之前和arr指向的是同一區域,而后array=null卻并沒有影響到arr.

所以,可以肯定,當一個引用類型的變量被作為參數傳遞到方法中的時候,僅僅是將變量值復制后傳遞過去,而本身沒有發生改變去指向其他。

Java參數的類型有哪些

當array=null的時候,array指向堆區的引用失效了。

以上的示例和分析都表明,Java中的確沒有引用傳遞,當把一個引用類型的變量作為參數傳遞給方法的時候,也僅僅是將引用變量的值復制一份給了方法中的參數,自己始終指向原本的對象。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Java參數的類型有哪些”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

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

AI

梁平县| 筠连县| 新邵县| 子长县| 荣成市| 荆州市| 汕头市| 蛟河市| 图木舒克市| 茌平县| 开鲁县| 海晏县| 靖安县| 象山县| 会同县| 台北市| 山西省| 石首市| 城口县| 景谷| 岢岚县| 台前县| 宽城| 马公市| 介休市| 神农架林区| 宜兰县| 阿克陶县| 疏附县| 涿鹿县| 哈巴河县| 陆良县| 孟津县| 建平县| 景洪市| 郁南县| 衢州市| 泌阳县| 财经| 陆丰市| 女性|