最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

這段代碼

先把一個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);
            }
        }
    }
}

輸出結(jié)果

這段代碼可以看出,第一次打印時 list里的值是1和2(對應(yīng)的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();//這是新加的一行
    }
}

總結(jié)

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

相關(guān)文章

最新評論

安陆市| 凤翔县| 阳谷县| 西林县| 乌兰浩特市| 揭阳市| 丘北县| 横峰县| 新建县| 佛冈县| 泌阳县| 肃宁县| 梁平县| 东源县| 龙井市| 合肥市| 获嘉县| 阳城县| 丹棱县| 郧西县| 峨山| 榆社县| 合作市| 阳西县| 龙江县| 元朗区| 柳州市| 山阴县| 新宁县| 镇远县| 马边| 通州市| 永福县| 黑水县| 锦州市| 邹城市| 米林县| 壶关县| 辛集市| 永和县| 安达市|