嗨,我有这个创建的方法。它的工作是接收一个整数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()方法不是一种方法吗?
感谢您的帮助!
答案 0 :(得分:8)
Java中的基元(int
,long
,float
等等。)没有成员方法,所以调用
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对象)一起使用。