java 是传值还是传址

先看段代码:

        InfoOfDay day = new InfoOfDay();
        List<String> list =day.getIncidentList();
        list = new ArrayList<>() ;
        list.add("hu");

        List<String> list1 =day.getIncidentList();
        System.out.println(list1.size());     //这行会报Null指针异常
@Data
public class InfoOfDay {

   

    //和当日匹配的日程信息
    private List<String> incidentList ;

   
}

 

上面代码运行会报错,是因为

List<String> list =day.getIncidentList(); //这个list 里面保存的是一个地址,当
day.getIncidentList()时,类中的list是null,没指向任何地址,
list = new ArrayList<>() 只是改变了外面list的值,类中的list 的值没有变

总结:java语言本质都是在传值,只不过针对引用类型传的是地址的值。

posted @ 2021-11-01 17:57  杭州胡欣  阅读(114)  评论(0编辑  收藏  举报