为什么在创建对象并使用getter和setter获取该整数值时整数为0?

问题描述

public class Test {

    public static void main(String[] args) {
    
        Test2 t2 = new Test2();
        t2.test();
        System.out.println(t2.getNum());
        
    }
}

public class Test2 {

    private int num;

    public void test() {
        Test2 t = new Test2();
        t.setNum(3);
        System.out.println(t.getNum());
    }
    
    public int getNum() {
        return num;
    }

    public void setNum(int bruh) {
        this.num = bruh;
    }
    
}

每当我创建Test2的对象并使用num设置t2.test()的值时,使用t2.getNum()时它将在控制台上打印为0。为什么返回值0?以及如何解决它,使其真正获得我想要的价值?类TestTest2是单独的文件,作为补充。

解决方法

public void test() {
    Test2 t = new Test2();
    t.setNum(3);
    System.out.println(t.getNum());
}

您在该方法中本地创建了一个Test2的新实例,这对this实例没有影响。

public void test() {
    setNum(3);
}

就足够了。

,

t2t或2个不同的对象。

调用t2.test()时,将创建一个新对象t,并设置t对象而不是t2的属性num。因此,当您调用t2.getNum()时,num keep的t2属性是默认值,对于Java中的整数,默认值为零。