编辑代码

//程序5-3
import static java.lang.System.out;

class ValueTransmission {
    public void changeVarValueImpossible(int a) {
        a = 2;
    }

    public void changeObjRefImpossible(A obj) {
        out.println("Obj对象引用改变前的id号:" + obj.getId());
        obj = new A();
        out.println("Obj对象引用改变后的id号:" + obj.getId());
    }

    public void changeObjDataPossible(A obj) {
        obj.setNickName("取昵称是一门技术");
    }

    public static void main(String[] args) {
        ValueTransmission vt = new ValueTransmission();
        int a = 1;
        out.println("函数外变量a的值(修改前):" + a);
        vt.changeVarValueImpossible(a);
        out.println("函数外变量a的值(修改后):" + a);

        A aObj = new A();
        out.println("aObj对象的id号(修改前):" + aObj.getId());
        vt.changeObjRefImpossible(aObj);
        out.println("aObj对象的id号(修改后):" + aObj.getId());

        out.println("aObj对象的昵称(修改前):" + aObj.getNickName());
        vt.changeObjDataPossible(aObj);
        out.println("aObj对象的昵称(修改后):" + aObj.getNickName());
    }
}

class A {
    private int id; // 对象的编号
    private String nickName;
    public static int objCount;
    A() {
        objCount++;
        id = objCount;
        nickName = "";
    }
    public int getId() {
        return id;
    }
    public void setNickName(String name) {
        nickName = name;
    }
    public String getNickName() {
        return nickName;
    }
}