我是Java的新手,正在尝试学习默认初始化的概念。以下是我提出的代码。即使我没有为变量x
&设置初始值。 y
,我已经实例化了该变量所属的类的实例。我认为初始化后,变量x和y默认设置为0。但是当我使用isVehicleInNegArea方法测试时,该方法返回false。这是怎么回事?有什么我想念的吗?请帮帮我!
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 :(得分:0)
原始int
的默认值为0
,0
不低于0
。将值设置为负值,如
int x = -1;
int y = -1;
答案 1 :(得分:0)
Java的默认初始化将数字类型设置为零,将布尔值设置为false,将对象类型设置为null。
答案 2 :(得分:0)
虽然如果没有实例化,原始整数类型将被设置为0,但默认情况下,您正在检查它们是否小于 0,不小于或等于。如果它们是0,它们不小于0,它们只是0.如果你想要它默认为true,我建议你在实例化时将它们设置为-1,或者进行检查
return (this.x <= 0 || this.y <= 0);
答案 3 :(得分:0)
int x; int y; //two global variable.
此处执行此语句时Vehicl ev1 = new Vehicle();
将default constuctor
执行x
,这些全局变量y
和default
将填充datatype
值{{ 1}}(int)为0.因此,X
和Y
都将使用Zero
进行实例化和初始化。
现在你的陈述
(this.x < 0 || this.y < 0); here this.x<0 is equivalent to 0<0 which returns false.
此处
x
和y
都使用zero
初始化,因此第一个条件语句(this.x&lt; 0)将返回false
并且永远不会移动到第二个语句,因为如果第一个语句返回false,则逻辑OR
运算符将永远不会检查第二个条件。
因此,您的方法boolean isVehicleInNegArea()
将返回false
。
谢谢..