我正在学习Java,我不明白为什么以下代码无法编译而没有错误:
public class SecondClass{
public static void main(String[] args){
int number = 45;
if (number instanceof String) {
System.out.println("Not a String!");
}
}
}
为什么我在条件操作中出错? instanceof
应该返回true
或false
吗?在这种情况下,应该false
,因为number
是int
,但此代码无法编译。
答案 0 :(得分:6)
instanceof运算符的RelationalExpression操作数的类型必须是引用类型或null类型;否则,发生编译时错误。
在您的情况下,RelationalExpression操作数的大小写为int
,因此您会收到编译时错误。
即使你有一个Integer
类型的表达式,你也会遇到:
如果RelationalExpression对ReferenceType的强制转换(第15.16节)将作为编译时错误被拒绝,则
instanceof
关系表达式同样会产生编译时错误。在这种情况下,instanceof
表达式的结果永远不会成立。