这个布尔方法怎么了?

时间:2014-07-10 05:35:25

标签: java methods boolean return equals

嗨,我有这个创建的方法。它的工作是接收一个整数A,它可以是10或30.如果值为10则返回TRUE,否则返回false。

public static boolean checkStatus(int a){
        if(a.equals(10)){
              return true;
        }
      return false;
    }

由于某些原因,我在if(a.equals(10))条件中遇到编译错误,该条件表示INT不能被导入。如果我没弄错的话,在这种情况下,.equals()方法不是一种方法吗?

感谢您的帮助!

8 个答案:

答案 0 :(得分:8)

Java中的基元(intlongfloat等等。)没有成员方法,所以调用

if (a.equals(10))

将无法编译,因为您正在尝试取消引用基元。相反,您希望使用==运算符来比较原始值:

if (a == 10)

并保留对非原始equals()

使用Objects方法

答案 1 :(得分:5)

您可以将equals用于对象,但int原语类型(a),而不是而不是一个对象。

因此你需要这样的东西:

public static boolean checkStatus (int a) {
    if (a == 10)
        return true;
   return false;
}

或更短且更明智(在这种情况下):

public static boolean checkStatus (int a) {
    return (a == 10);
}

(a)纯粹主义者会争辩说这证明Java并不是一种真正的面向对象的语言,但那是因为他们疯狂的狂热: - )

答案 2 :(得分:1)

您可以使用

public static boolean checkStatus(int a){
        if(a==10){
              return true;
        }
      return false;
    }

public static boolean checkStatus(Integer a){

        if(a.equals(new Integer(10))){
              return true;
        }
      return false;
    }

答案 3 :(得分:1)

equals()方法属于Object Java类,每个对象类override都必须String, Integer and MyObject(implemented class)。但是int不是Java Object,并且那里没有equals()方法。

您可以将==与int值一起使用,您可以简化代码。

public static boolean checkStatus(int a){
    return a==10;
}

答案 4 :(得分:1)

equals主要用于对象的非基元。

==用于原语。

所以,你可以使用它

public static boolean checkStatus (int a) {
    if (a == 10)
        return true;
   return false;
}

示例1: 对于object,如果重写equals方法,则“equals”方法将返回true。

public class Employee {
    int id;

    @Override
    public boolean equals(Object obj) {
        Employee e = (Employee) obj;
        return id == e.id;
    }

    Employee(int id) {
        this.id = id;
    }

    public static void main(String[] args) {
        Employee e1 = new Employee(5);
        Employee e2 = new Employee(5);
        System.out.println("e1.equals(e2) is: " + e1.equals(e2));
        System.out.println("(e1 == e2) is: " + (e1 == e2));
    }
}

输出:

  

e1.equals(e2)是: true

     

(e1 == e2)是: false

示例2: 对于object,如果不覆盖equals方法,则“equals”方法的作用为“==”

public class Employee {
    int id;

    Employee(int id) {
        this.id = id;
    }

    public static void main(String[] args) {
        Employee e1 = new Employee(5);
        Employee e2 = new Employee(5);
        System.out.println("e1.equals(e2) is: " + e1.equals(e2));
        System.out.println("(e1 == e2) is: " + (e1 == e2));
    }
}

输出:

  

e1.equals(e2)是: false

     

(e1 == e2)是: false

这里“equals”方法的作用是“==”。所以,不要忘记覆盖对象的equals方法。

答案 5 :(得分:0)

int 是Java中的基元,基元没有行为a.k.a方法。

因此您无法在.equals上致电int。所以这里的选项是使用==

public static boolean checkStatus(Integer a){
  return (a==10);
}

或将int转换为Integer这是一个包装类

public static boolean checkStatus(Integer a){
    return a.equals(10);
}

答案 6 :(得分:0)

您可以使用Integer Class

执行类似的操作
  Integer x = 5;
  Integer y = 10;
  Integer z =5;
  Short a = 5;

  System.out.println(x.equals(y));  
  System.out.println(x.equals(z)); 
  System.out.println(x.equals(a));

输出:

  false
  true
  false

答案 7 :(得分:0)

您当然可以将整数包装为:

Integer i = new Integer(a);

然后equals函数可以与'i'(新的Integer对象)一起使用。