java引用数据类型值的传递


引用数据类型值的传递传递的是堆内存空间的地址

例子1:

public class object {

    public static void main(String[] args) {
        Person person1 = new Person(20);//person1指向内存空间1001
        Person person2 = person1;//person2也指向内存空间1001
        person2.age = 30;
        System.out.println("person1"+person1);
        System.out.println("person2"+person2);
    }

}

class Person{
    int age;
    public Person(int age){
        this.age = age;
    }
    @Override
    public String toString() {
        return "的age=" + age;
    }
}

运行结果:

person1的age=30
person2的age=30

分析:

变量person2和变量person1指向的是同一块内存,所以修改person2的值时,person1也会跟着改变

例子2:

public class object {
    
    public static void main(String[] args) {
        Person person1 = new Person(20);//person1指向内存空间1001
        change(person1);
        System.out.println("person1"+person1);
    }
    
    public static void change(Person person2){
        //刚调用方法时,person2指向person1的内存空间
        person2 = new Person(30);//新开辟一个内存空间1002存放新的person对象
        System.out.println("person2"+person2);
    }
    
}

class Person{
    int age;
    public Person(int age){
        this.age = age;
    }
    @Override
    public String toString() {
        return "的age=" + age;
    }
}

运行结果:

person2的age=30
person1的age=20

分析:

change方法执行后,变量person2存放的是新创建的person对象的地址值,也就是说变量person2指向内存空间1002,main方法中的person1变量指向的内存空间仍为1001

搜索

复制

原创文章,作者:bd101bd101,如若转载,请注明出处:https://blog.ytso.com/tech/java/274854.html

(0)
上一篇 2022年7月17日 03:52
下一篇 2022年7月17日 03:52

相关推荐

发表回复

登录后才能评论