我正在研究Java中的静态变量和实例变量,我无法理解代码的输出。

package java_course;

public class staticVsInstance {

    static int x = 11; 
    private int y = 33; 

    public void method1(int x) {
        staticVsInstance t = new staticVsInstance();
        System.out.println("t.x "+t.x + " " +"t.y  "+ t.y + " " +"x "+ x + " "+"y " + y);
        this.x = 22;
        this.y = 44;
        System.out.println("t.x "+t.x + " " +"t.y  "+ t.y + " " +"x "+ x + " "+"y " + y);
    }

    public static void main(String args[]) {

        staticVsInstance obj1 = new staticVsInstance();

        System.out.println(obj1.y);
        obj1.method1(10);
        System.out.println(obj1.y);
    }
}

而输出是

33
t.x 11 t.y  33 x 10 y 33
t.x 22 t.y  33 x 10 y 44
44

是否 this.y 指代 obj1.yt.ymethod1?

为什么没有改变 this.y 任何影响 t.y?

解决方案:

y 是一个全局实例变量。当你调用 obj1.method1(10);, thismethod1 指的是 obj1. 所以… this.y 指代 obj1.y 方法1中。

为什么改变this.y对t.y没有任何影响?

因为 this 指的是 obj1 所以你是在改变 obj1t.

给TA打赏
共{{data.count}}人
人已打赏
未分类

nohup: 忽略输入,但我的python程序确实需要输入。

2022-9-8 16:52:38

未分类

试图更新Azure B2C上的用户时,出现 "权限不足 "的错误。

2022-9-8 16:52:40

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索