Java | 参数传值机制

值传递

java中,方法中所有的参数的都是“值传递”,就是传递的是原来值的副本,不是原来的参数,因此,改变不会影响到原来的参数。

基本数据类型参数的传值

传递的都是副本,改变以后不会影响到原来的参数。

引用类型参数的传递

传递的是值的副本,但是引用类型指本来就代表一个“对象的地址”。因此,副本和原参数都指向的是同一个地址,改变副本的值,也就会改变原来参数的值了。
例:

public class User {    
    int id;   
    String name;    
    
    //构造方法
    public User(int id, String name) {
        this.id = id;        
        this.name = name;    
    }    
  
   //这个地方传递的是对象的地址    
    public void test1(User u){
        u.name = "李四";   
    }    
    
    //这个地方传递的也是对象的地址   
    public void test2(User u){       
        //因为这个地方只是又创建一个新的对象        
        //调用构造方法,会返回一个地址       
        //所以这里创建完对象以后,u就是一个新的对象了,跟原来的没有关系了。       
        u = new User(2, "王五");   
    }    
    public static void main(String[] args) {        
        User user = new User(1, "张三");        
        System.out.println("原来的值:" + user.name);   
        
        user.test1(user);        
        System.out.println("第一改变后的值:" + user.name);       
        //为什么第二次改变了,但是输出的值没有改变       
        user.test2(user);        
        System.out.println("第二改变后的值:" + user.name);       
        /*输出的结果:            
            原来的值:张三            
            第一改变后的值:李四            
            第二改变后的值:李四         
        */   
    }
}


关注公众号,随时获取最新资讯

细节决定成败!
个人愚见,如有不对,恳请斧正!

posted @ 2020-02-25 23:05  一点浩然气~  阅读(329)  评论(0编辑  收藏  举报