值传递和引用传递

值传递和引用传递
强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

值传递和引用传递

最近面试中遇到这样一个问题:
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并 可返回变化后的结果,那么这里到底是值传递还是引用传递?

解答:值传递。
值传递和引用传递的区别:
值传递对象发送改变 不会对引用的内存地址上的源数据产生改变;
引用传递会直接改变源数据。
总结:

  • a.一个方法不能修改一个基本数据的参数
  • b.一个方法可以可改变一个对象参数的状态(如ArrayList、User)
  • c.一个方法不能改变对象参数的引用
  • d.直接通过引用地址 进行修改是可以的 a[0]=1;
public class 值传递 {
   
       public static void main(String[] args) {
   
             ArrayList a=new ArrayList<>();
             a.add("1");
             //add(a);
             addb(a);
             System.out.println(a);
             
             String name="luo";
             upString(name);
             System.out.println(name);
             
             User u=new User("luo",12);
             update(u);
             System.out.println(u);
             
             
       }
       
       public static void update(User u)
       {
   
             u.setAge(10);
       }
       
       public static void upString(String name)
       {
   
             name="li";
             
       }
       public static void add(ArrayList a)
       {
   
             //这里只是单纯的值变化
             //输出结果是 1、3
             a.add("2");
       }
       
       public static void addb(ArrayList a)
       
       {
   
             //这里试图改变对象的引用,但是本质上它只能做数值操作
             //所以输出结果是 1
             ArrayList b=new ArrayList<>();
             b.add("3");
             a=b;         
       }
}

在这里插入图片描述

本文来源蹊源的奇思妙想,由架构君转载发布,观点不代表Java架构师必看的立场,转载请标明来源出处:https://javajgs.com/archives/14719

发表评论