我试图了解变量的范围,以及如何使用从一个类初始化的变量并在另一个类中使用它们,但陷入我的理解之中。
我有一个Test1
类,定义如下:
public class Test1 {
private int x;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
}
我在main
中称这堂课:
public class Main {
public static void main(String[] args) {
Test1 test1 = new Test1();
Test2 test2 = new Test2();
test1.setX(33);
int y = test1.getX();
System.out.print(y); // prints 33
test2.testing(); // method outputs 0 instead of showing the value of X
}
}
我还有另一堂课Test2
:
public class Test2 {
public static void testing() {
Test1 test1 = new Test1();
int val = test1.getX();
System.out.print(val);
}
}
如果我随后在主目录中调用该方法,则val
的值将显示0
而不是33。如何在另一个类中访问getX()
的内存中的值?
谢谢
答案 0 :(得分:1)
将类视为用于创建新对象的“模具”。
在您的main
方法中,使用该模具创建一个新的Test1
对象。在testing
方法中,使用相同的模具创建新的Test1
对象。但是,在创建的第一个对象中,您将x
的设置为33,但没有对另一个对象执行相同的操作。
像篮球一样思考。您有一个制作篮球的模具,并用它来制作两个篮球。您给第一个篮球加气时要充满33%的空气,但不要在第二个篮球中放任何空气。仅仅因为使用了相同的模具,并不意味着两个篮球都抽了33%的空气。
编辑:这是一个很好的视频,解释了示波器,应该可以帮助您! https://www.youtube.com/watch?v=Y2iN3TO5qOQ
答案 1 :(得分:0)
看到0的原因是因为您正在创建Test1的新实例,并在getX()调用中引用该实例。
为了查看类的现有实例的值,您必须将该实例传递到您的方法中。例如:
public void testing(Test1 instance){
System.out.println(instance.getX());
}