leo*_*eon 2 java oop boolean object
我正在尝试使用另一个类中的另一个对象来检查一个人的年龄,由于某种原因,areThe布尔值无论如何都返回 false。我实现的以下代码是_
public class main {
public static void main(String[] args){
Obj object = new Obj();
object.areTheyOldEnough();
if(object.areTheyOldEnough() == true){
System.out.println("They are old enough!");
}else{
System.out.println("They are not old enough!");
}
}
}
public class Obj {
private int age = 15;
private boolean areThey;
public boolean areTheyOldEnough() {
if (age > 12) {
boolean areThey = true;
}
return areThey;
}
}
Run Code Online (Sandbox Code Playgroud)
您的问题称为阴影;这里:
这最内层的声明:
if (age > 12) {
boolean areThey = true;
Run Code Online (Sandbox Code Playgroud)
完全错了,应该是:
areThey = true;
Run Code Online (Sandbox Code Playgroud)
反而。关键是:您正在声明一个具有该名称的新变量,并为其赋值true
。但是当那个 if-block 是“left”时,这个变量就凭空消失了……返回的是你班级中字段 的值。并且那个仍然具有其初始默认值。areThey
obj
false
除此之外:命名是您代码中的一个真正问题。使用 A) 符合 java 编码标准的名称;例如,类名以大写开头;B)意味着什么。
换句话说:名称Object没有任何意义(除了创建另一个与 java.lang.Object 类名称冲突的名称)。最好将其称为“testInstance”或类似的名称 - 如前所述:使用具有含义的名称。