欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java通過實例了解值傳遞和引用傳遞

 更新時間:2019年11月05日 09:33:04   作者:陳晨辰  
這篇文章主要介紹了java通過實例了解值傳遞和引用傳遞,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

這篇文章主要介紹了java通過實例了解值傳遞和引用傳遞,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

一.java中的值傳遞的問題

指的是在方法調(diào)用時,傳遞的參數(shù)是按值的拷貝傳遞。示例如下:

public static void main(String[] args) {
	int a=1;
	change(a);
	System.out.println("交換a后的值:"+a);
}
private static void change(int a) {
	a=1111;
	System.out.println("交換方法里面的a:"+a);
}
//運行輸出
//交換方法里面的a:1111
//交換a后的值:1

按值傳遞重要特點:傳遞的是值的拷貝,也就是說傳遞后就互不相關(guān)了。

二.java中的引用傳遞的問題

指的是在方法調(diào)用時,傳遞的參數(shù)是按引用進行傳遞,其實傳遞的引用的地址,也就是變量所對應(yīng)的內(nèi)存空間的地址。示例如下:

public static void main(String[] args) {
	Person p=new Person();
	p.setAge(25);
	changeAge(p);
	System.out.println("改變年齡后的年齡:"+p.getAge());
}
private static void changeAge(Person p) {
	p.setAge(35);
	System.out.println("改變年齡方法里面的年齡:"+p.getAge());
}
//運行輸出
//改變年齡方法里面的年齡:35
//改變年齡后的年齡:35
class Person{
	private int age=10;
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
}

傳遞的是值的引用,也就是說傳遞前和傳遞后都指向同一個引用(也就是同一個內(nèi)存空間),引用類型的傳遞后的修改會影響原來的值。

從上面兩個例子來看,基本數(shù)據(jù)類型的傳遞是值傳遞,傳遞過去的是具體的數(shù)值;而引用數(shù)據(jù)類型的傳遞是引用傳遞,傳遞過去的是內(nèi)存的地址。其實不然,請看下面的兩個例子。

三.到底是值傳遞還是引用傳遞

請看下面一個例子,String類型也算是引用數(shù)據(jù)類型,把上面第一個值傳遞的里面的整形換成字符串類型,例子代碼如下:

public static void main(String[] args) {
	String str="哈哈我是字符串";
	change(str);
	System.out.println("交換字符串后的值:"+str);
}
private static void change(String str) {
	str="我在里面被交換了";
	System.out.println("交換方法里面的字符串:"+str);
}
//交換方法里面的字符串:我在里面被交換了
//交換字符串后的值:哈哈我是字符串

交換以后,引用類型的傳遞str并沒有改變,嘗試使用String s=new String("xxx");嘗試還是沒有改變.如果說String類比較特殊,請看下面的例子。

public static void main(String[] args) {
	Person p=new Person();
	p.setAge(25);
	changeAge(p);
	System.out.println("改變年齡后的年齡:"+p.getAge());
}
private static void changeAge(Person p) {
	p=new Person();
	p.setAge(35);
	System.out.println("改變年齡方法里面的年齡:"+p.getAge());
}
//運行輸出
//改變年齡方法里面的年齡:35
//改變年齡后的年齡:25

我們在方法里面重新改變person對象的指向,這時如果是引用傳遞,必然會導(dǎo)致p對象里面的age發(fā)生改變,但是實際上并未改變。這里確實是按照引用傳遞的,但是傳遞的還是引用的一個副本,并不是原始的引用本身。在 Java 應(yīng)用程序中,當(dāng)對象引用是傳遞給方法的一個參數(shù)時,您傳遞的是該引用的一個副本(可以認為特殊的值傳遞),而不是引用本身。

四.總結(jié)

在java里面,一般不可變的對象 例于String 和8大基本數(shù)據(jù)類型的這些,都是值的傳遞,其他引用數(shù)據(jù)類型的傳遞是引用副本的傳遞。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java集合教程之Collection實例詳解

    Java集合教程之Collection實例詳解

    集合,或者叫容器,是一個包含多個元素的對象,下面這篇文章主要給大家介紹了關(guān)于Java集合教程之Collection的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-08-08
  • springboot中如何引入AOP切面編程

    springboot中如何引入AOP切面編程

    這篇文章主要介紹了springboot中如何引入AOP切面編程問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • SpringBoot中配置雙數(shù)據(jù)源的實現(xiàn)示例

    SpringBoot中配置雙數(shù)據(jù)源的實現(xiàn)示例

    在許多應(yīng)用程序中,可能會遇到需要連接多個數(shù)據(jù)庫的情況,本文主要介紹了SpringBoot中配置雙數(shù)據(jù)源的實現(xiàn)示例,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • Java截取特定兩個標記之間的字符串實例

    Java截取特定兩個標記之間的字符串實例

    下面小編就為大家?guī)硪黄狫ava截取特定兩個標記之間的字符串實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • SpringBoot主鍵ID傳到前端后精度丟失的問題解決

    SpringBoot主鍵ID傳到前端后精度丟失的問題解決

    這篇文章主要通過示例為大家詳細介紹一些SpringBoot如何解決雪花算法主鍵ID傳到前端后精度丟失問題,文中的示例代碼講解詳細,需要的可以參考一下
    2022-05-05
  • SpringBoot整合redis使用緩存注解詳解

    SpringBoot整合redis使用緩存注解詳解

    這篇文章主要介紹了SpringBoot整合redis使用緩存注解詳解,@Cacheable在方法執(zhí)行前判斷對應(yīng)緩存是否存在,如果存在直接返回緩存結(jié)果,否者執(zhí)行方法將結(jié)果緩存,適用于查詢類,需要的朋友可以參考下
    2024-01-01
  • 如何使用Sentry 監(jiān)控你的Spring Boot應(yīng)用

    如何使用Sentry 監(jiān)控你的Spring Boot應(yīng)用

    這篇文章主要介紹了如何使用Sentry 監(jiān)控你的Spring Boot應(yīng)用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • SpringBoot中如何進行統(tǒng)一異常處理

    SpringBoot中如何進行統(tǒng)一異常處理

    大家好,本篇文章主要講的是SpringBoot中如何進行統(tǒng)一異常處理,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • SpringBoot中@ConfigurationProperties 配置綁定

    SpringBoot中@ConfigurationProperties 配置綁定

    本文主要介紹了SpringBoot中@ConfigurationProperties 配置綁定,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • springBoot系列常用注解(小結(jié))

    springBoot系列常用注解(小結(jié))

    這篇文章主要介紹了springBoot系列常用注解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評論