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