提问人: 提问时间:3/4/2016 最后编辑:Himanshu Bhandari 更新时间:3/4/2016 访问量:33
对 Java 中实例变量的默认初始化的混淆
confusion over default initialisation of instance variables in java
问:
我是 Java 的新手,正在尝试学习默认初始化的概念。下面是我想出的代码。即使我没有为变量&设置初始值,我也已经实例化了变量所属类的实例。我以为初始化后,变量 x 和 y 将默认设置为 0。但是当我使用 isVehicleInNegArea 方法进行测试时,该方法返回 false。这是怎么回事?我错过了什么吗?请帮帮我!x
y
public class Vehicle{
public static void main(String[] args) {
Vehiclev1 = new Vehicle();
boolean onMap = v1.isVehicleInNegArea();
System.out.println(onMap);
}
int x;
int y;
boolean isVehicleInNegArea(){
return (this.x < 0 || this.y < 0);
}
}
答:
0赞
Elliott Frisch
3/4/2016
#1
原语的默认值是 且不小于 。将值设置为负值,例如int
0
0
0
int x = -1;
int y = -1;
0赞
Chris Kitching
3/4/2016
#2
Java 的默认初始化将数值类型设置为零,将布尔值设置为 false,将对象类型设置为 null。
0赞
Tudedude
3/4/2016
#3
尽管原始整数类型在未实例化时将设置为 0,但默认情况下,您正在检查它们是否小于 0,不小于或等于 0。如果它们是 0,则它们不小于 0,它们只是 0。如果您希望它默认为 true,我建议您在实例化它们时将它们设置为 -1,或者进行检查
return (this.x <= 0 || this.y <= 0);
0赞
Vikrant Kashyap
3/4/2016
#4
int x; int y; //two global variable.
在这里,当您执行此语句时,将执行 a 和这些全局变量,并将填充值 (int),即 0。所以 ,两者都将使用 进行实例化和初始化。Vehicl ev1 = new Vehicle();
default constuctor
x
y
default
datatype
X
Y
Zero
现在您的声明
(this.x < 0 || this.y < 0); here this.x<0 is equivalent to 0<0 which returns false.
这里和两者都是初始化的,所以第一个条件语句 (this.x<0) 将返回并且永远不会移动到第二个语句,因为如果第一个语句返回 false,逻辑运算符永远不会检查第二个条件。
x
y
zero
false
OR
所以你的方法将返回 .boolean isVehicleInNegArea()
false
谢谢。。
下一个:布尔表达式生成器的任何实现
评论