java中实例变量默认初始化的混淆

时间:2016-03-04 05:10:38

标签: java initialization logical-operators boolean-logic

我是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);
    }
}

4 个答案:

答案 0 :(得分:0)

原始int的默认值为00不低于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,这些全局变量ydefault将填充datatype值{{ 1}}(int)为0.因此,XY都将使用Zero进行实例化和初始化。

现在你的陈述

(this.x < 0 || this.y < 0); here this.x<0 is equivalent to 0<0 which returns false.
  

此处xy都使用zero初始化,因此第一个条件语句(this.x&lt; 0)将返回false并且永远不会移动到第二个语句,因为如果第一个语句返回false,则逻辑OR运算符将永远不会检查第二个条件。

因此,您的方法boolean isVehicleInNegArea()将返回false

谢谢..