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

基于傳遞list類型的參數(shù)的問題

 更新時間:2023年11月30日 15:15:04   作者:wj振藩  
這篇文章主要介紹了基于傳遞list類型的參數(shù)的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

傳遞list類型的參數(shù)問題

java中除了基礎的數(shù)據(jù)類型是值傳遞外,其它類型都是對象,也就是引用類型(地址傳遞),這個就不多說了

今天遇到一個問題,就是在多次添加同一個list對象到另一個list里的時候,為什么會添加多少次list對象,外面這層list的大小就有多少呢,都是相同的地址?。?!

這段代碼

先把一個list作為參數(shù)傳遞到另一個list類型的add函數(shù)中

public class Main{
    public static void main(String[] args) {
        List<List<Integer>> lists = new ArrayList<>();
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        lists.add(list);
        print(lists);
        list.clear();
        list.add(3);
        lists.add(list);
        print(lists);
    }
    public static void print(List<List<Integer>> lists){
        System.out.println("開始打印");
        for(List<Integer> list : lists){
            for(Integer num : list){
                System.out.println(num);
            }
        }
    }
}

輸出結果

這段代碼可以看出,第一次打印時 list里的值是1和2(對應的lists里的值也只有1和2,因為lists里有一個list);

第一次打印完后,把list清空后添加3,這個時候list里值只有3,但是這個時候可以看到第二次的打印 lists的值有兩個3(因為里面有兩個list),

而且這兩個list存值的地方是同一個地址,在調(diào)用list.clear()的時候,list所在的地址里的值就變成空的了,并沒有出現(xiàn)其中一個list的值是1,2;另一個list的值是3。

這端代碼調(diào)用了兩次lists.add(),所以lists里面存儲了兩個List類型的值,而恰好這兩個List都是list,它們的值都是由同一個地址存儲的。

感覺這里我的解釋有點描述不清楚。。。。。。

因為我想描述的不是list是怎么傳遞的,而是為什么第二次打印會出現(xiàn)兩次3

對于引用傳遞的例子,添加兩行代碼就會看得很清晰:

  • print函數(shù)內(nèi)的末尾添加一句參數(shù)lists.clear()
  • main函數(shù)的最后在添加一句print()函數(shù)
public class Main{
    public static void main(String[] args) {
        List<List<Integer>> lists = new ArrayList<>();
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        lists.add(list);
        print(lists);
        list.clear();
        list.add(3);
        lists.add(list);
        print(lists);
        print(lists);//這是新加的一行
    }
    public static void print(List<List<Integer>> lists){
        System.out.println("開始打印");
        for(List<Integer> list : lists){
            for(Integer num : list){
                System.out.println(num);
            }
        }
        lists.clear();//這是新加的一行
    }
}

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 利用spring-boot-maven-plugin插件打包SpringBoot應用方式

    利用spring-boot-maven-plugin插件打包SpringBoot應用方式

    spring-boot-maven-plugin插件可以將SpringBoot應用打成帶依賴的jar包,該包中不僅包含應用自身的代碼,還包含了pom.xml中配置的依賴,修改pom.xml打包后,生成的jar包就包含了項目依賴,生成的jar包位于項目的target文件夾下
    2025-02-02
  • 關于Mysql的四種存儲引擎

    關于Mysql的四種存儲引擎

    這篇文章主要介紹了關于Mysql的四種存儲引擎,MySql的核心就是存儲引擎,不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能,使用不同的存儲引擎,還可以 獲得特定的功能,需要的朋友可以參考下
    2023-05-05
  • 詳解基于Spring Cloud幾行配置完成單點登錄開發(fā)

    詳解基于Spring Cloud幾行配置完成單點登錄開發(fā)

    這篇文章主要介紹了詳解基于Spring Cloud幾行配置完成單點登錄開發(fā),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • SpringBoot實現(xiàn)攔截器、過濾器、監(jiān)聽器過程解析

    SpringBoot實現(xiàn)攔截器、過濾器、監(jiān)聽器過程解析

    這篇文章主要介紹了SpringBoot實現(xiàn)攔截器、過濾器、監(jiān)聽器過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • 詳解SpringBoot+Dubbo集成ELK實戰(zhàn)

    詳解SpringBoot+Dubbo集成ELK實戰(zhàn)

    這篇文章主要介紹了詳解SpringBoot+Dubbo集成ELK實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • nacos中的配置使用@Value注解獲取不到值的原因及解決方案

    nacos中的配置使用@Value注解獲取不到值的原因及解決方案

    這篇文章主要介紹了nacos中的配置使用@Value注解獲取不到值的原因分析,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Hibernate5新特性介紹

    Hibernate5新特性介紹

    hibernate5中有了一些新的變動,下面腳本之家小編把Hibernate5新特性相關知識,分享到腳本之家平臺,感興趣的朋友參考下吧
    2017-09-09
  • Spring Boot環(huán)境屬性占位符解析及類型轉換詳解

    Spring Boot環(huán)境屬性占位符解析及類型轉換詳解

    這篇文章主要給大家介紹了關于Spring Boot環(huán)境屬性占位符解析及類型轉換的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-08-08
  • SpringBoot整合atomikos實現(xiàn)跨庫事務的詳細方案

    SpringBoot整合atomikos實現(xiàn)跨庫事務的詳細方案

    這篇文章主要介紹了SpringBoot整合atomikos實現(xiàn)跨庫事務,業(yè)務主要涉及政府及企業(yè)且并發(fā)量不大,所以采用XA事務,雖然性能有所損失,但是可以保證數(shù)據(jù)的強一致性,需要的朋友可以參考下
    2022-06-06
  • Java數(shù)組的遍歷與求和知識點

    Java數(shù)組的遍歷與求和知識點

    本篇文章給大家總計了Java數(shù)組的遍歷與求和的知識點以及需要注意的地方,需要的朋友參考學習下。
    2018-02-02

最新評論