【发布时间】:2014-10-06 14:22:08
【问题描述】:
我在下面有一个简单的 java 程序。我已经声明了实例整数变量“x1”和“x2”,从我的类构造函数中的参数初始化它们。 我还声明了一个整数变量“diff”,它计算出“x1”和“x2”之间的差异,但变量返回零!我不知道问题出在哪里,我的构造函数参数不为零!!!。我将不胜感激任何帮助
public class Smallest {
int x1;
int x2;
public Smallest(int a,int b){
this.x1=a;
this.x2=b;
}
int diff = x2 - x1;
public void draw(){
System.out.println("X1= "+ x1 +"\n X2= "+ x2 +"\n diff= " +diff);
}
public static void main(String[] args) {
Smallest small=new Smallest(10,20);
small.draw();
}
}
这是输出
X1= 10;
X2= 20;
diff= 0;
【问题讨论】:
-
因为
diff在调用构造函数之前被初始化,结果为x2 - x1,即0。 -
所以你的意思是如果实例变量在创建过程中没有被初始化,它们就会被初始化为默认值?我的意思是,它们是在构造函数之前执行的吗?我以为java编译器会按照默认的顺序执行?
-
是的,它们在构造函数被调用之前被初始化。
-
这真的很棘手。更糟糕的是,它不是语法错误或编译时错误
标签: java class variables constructor