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

基于傳遞list類(lèi)型的參數(shù)的問(wèn)題

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

傳遞list類(lèi)型的參數(shù)問(wèn)題

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

今天遇到一個(gè)問(wèn)題,就是在多次添加同一個(gè)list對(duì)象到另一個(gè)list里的時(shí)候,為什么會(huì)添加多少次list對(duì)象,外面這層list的大小就有多少呢,都是相同的地址!??!

這段代碼

先把一個(gè)list作為參數(shù)傳遞到另一個(gè)list類(lèi)型的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("開(kāi)始打印");
        for(List<Integer> list : lists){
            for(Integer num : list){
                System.out.println(num);
            }
        }
    }
}

輸出結(jié)果

這段代碼可以看出,第一次打印時(shí) list里的值是1和2(對(duì)應(yīng)的lists里的值也只有1和2,因?yàn)閘ists里有一個(gè)list);

第一次打印完后,把list清空后添加3,這個(gè)時(shí)候list里值只有3,但是這個(gè)時(shí)候可以看到第二次的打印 lists的值有兩個(gè)3(因?yàn)槔锩嬗袃蓚€(gè)list),

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

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

感覺(jué)這里我的解釋有點(diǎn)描述不清楚。。。。。。

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

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

  • 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("開(kāi)始打印");
        for(List<Integer> list : lists){
            for(Integer num : list){
                System.out.println(num);
            }
        }
        lists.clear();//這是新加的一行
    }
}

總結(jié)

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

相關(guān)文章

最新評(píng)論

潜山县| 天门市| 兴文县| 周口市| 岳池县| 苗栗市| 瑞安市| 湖南省| 称多县| 合作市| 伊吾县| 新巴尔虎左旗| 察雅县| 包头市| 新沂市| 上虞市| 项城市| 南康市| 永兴县| 濉溪县| 辽宁省| 巴马| 山阴县| 双辽市| 托克托县| 宁武县| 印江| 宾川县| 兴国县| 阿城市| 大兴区| 顺义区| 铜梁县| 宜阳县| 五寨县| 大邑县| 南召县| 广西| 绥宁县| 司法| 东阿县|