【JAVA】三 JAVA 单例

Qeustion

JAVA中对象作为参数传递给一个方法,到底是值传递,还是引用传递?

Anwer

值传递!Java中只有按值传递,没有按引用传递!

JAVA

package com.cn.mark.test;

public class Student {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Student() {
    }

    public Student(String name) {
        this.setName(name);
    }

    public void say() {
        System.out.println(this.getName());
    }

    public static void new_student(Student s) {// 4.[接收 copy_s_reference]
        s.say();                               // 5.[通过 copy_s_reference 找到对象 输出 zhangsan]
        s = new Student("lisi");               // 6.[ 将 copy_s_reference 指向堆内存新对象 ]
    }                                          // 7 [本方法中与 s_object 或 s_reference 没有半毛钱关系 ]

    public static void main(String[] args) {
        Student s = new Student("zhangsan");// 1.[s 是 reference 暂且叫他为 s_reference] 
        s.say();                            // 2.[s_reference 找到 堆内存对象 并 调用 say 方法]
        new_student(s);                     // 3.[将 s 的 reference copy 出来一份,暂且叫他为 copy_s_reference]
                                            //   [s_reference 与 copy_s_reference 都指向堆内存中同一个地址]
                                            //   [把 copy_reference 传入 new_student]


        s.say();                            // 8. [ s_reference 输出 zhangsan]

    }

}

第五步时内存对照

java中传对象 java对象传参_reference

第六步时内存对照

java中传对象 java对象传参_传参_02