Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从另一个类访问字段的值_Java - Fatal编程技术网

Java 从另一个类访问字段的值

Java 从另一个类访问字段的值,java,Java,我试图理解变量的范围,以及如何使用从一个类初始化的变量,并在另一个类中使用它们,但接下来我的理解陷入了困境 我有一个类Test1,定义如下: public class Test1 { private int x; public int getX() { return x; } public void setX(int x) { this.x = x; } } 我主要是给这个班打电话: 我有另一个类Test2: 如果在

我试图理解变量的范围,以及如何使用从一个类初始化的变量,并在另一个类中使用它们,但接下来我的理解陷入了困境

我有一个类Test1,定义如下:

public class Test1 {

    private int x;

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }
}
我主要是给这个班打电话:

我有另一个类Test2:

如果在main中调用该方法,则val的值显示为0,而不是33。如何在另一个类中访问getX内存中的值


谢谢

您看到0的原因是您正在创建Test1的新实例,并在getX调用中引用该实例

为了查看类的现有实例的值,必须将该实例传递到方法中。例如:

public void testing(Test1 instance){
    System.out.println(instance.getX());
}

将类视为创建新对象的模型

在主方法中,使用该模型创建新的Test1对象。在测试方法中,使用相同的模具创建新的Test1对象。但是,在您创建的第一个对象中,您将x的值设置为33,但没有对另一个对象执行相同的操作

把它想象成一个篮球。你有一个模子来做篮球,然后用它来做两个篮球。你给第一个篮球打满33%的空气,但不要给第二个篮球注入任何空气。仅仅因为使用了相同的模具,并不意味着两个篮球都能抽到33%的空气


编辑:这是一个很好的视频解释范围,应该可以帮助你

您必须使用静态修改器。私有静态int x;关键是你不明白静态场之间的区别。。。和普通字段。除非字段标记为静态,否则每个对象实例都有自己的副本。考虑一个类比…一辆汽车从装配线驶出。你打开那辆车的后备箱,把手提箱放进去。过了一会儿,另一辆车从装配线滚落。它在各方面都与第一辆车相同。当你打开第二辆车的后备箱时,你希望在那里找到你的手提箱吗?为什么不呢?我不认为这是重复的。duplicate标志回答了代码的另一个问题,但实际上并没有回答提问者的问题。在Test2中创建一个简单的构造函数以接受test1作为参数将回答这个问题。
public class Test2 {
    public static void testing() {
        Test1 test1 = new Test1();

        int val = test1.getX();
        System.out.print(val);

    }
}
public void testing(Test1 instance){
    System.out.println(instance.getX());
}