黑马程序员技术交流社区
标题:
关于instanceof,为什么会出现这样的错误?
[打印本页]
作者:
海狮
时间:
2015-10-18 09:02
标题:
关于instanceof,为什么会出现这样的错误?
程序一:
<div>class TestDemo</div><div>{</div><div> public static void main(String[] args){</div><div>System.out.println("aaa" instanceof String);</div><div>}}</div>
复制代码
代码通过,打印结果为true
程序二:
class TestDemo
{
public static void main(String[] args){
System.out.println("aaa" instanceof Integer);
}}
复制代码
编译失败,错误提示为:
TestDemo.java:4: 错误: 不兼容的类型: String无法转换为Integer
System.out.println("aaa" instanceof Integer);
^
1 个错误
复制代码
这是为什么呢,我只是判断比较,又不是赋值,为什么出现在这样的提示?
程序三:
class TestDemo
{
public static void main(String[] args){
Integer a = 3;
System.out.println(a instanceof Integer);
}}
复制代码
编译通过,打印结果为true
程序四:
class TestDemo
{
public static void main(String[] args){
Integer a = 3;
System.out.println(a instanceof String);
}}
复制代码
结果
TestDemo.java:5: 错误: 不兼容的类型: Integer无法转换为String
System.out.println(a instanceof String);
^
1 个错误
复制代码
应该是同样问题,为什么呢?
还有,当代码这样写:
int a = 3;
System.out.println(a instanceof Integer);
复制代码
TestDemo.java:5: 错误: 意外的类型
System.out.println(a instanceof Integer);
^
需要: 引用
找到: int
1 个错误
复制代码
会出现上面的错误,又是为什么呢?
作者:
海狮
时间:
2015-10-18 22:35
顶一下,有人知道吗
作者:
LLLLL
时间:
2015-10-19 10:52
楼主 可真会玩!
作者:
jlq
时间:
2015-10-19 12:44
楼主真会玩
作者:
海狮
时间:
2015-10-19 17:02
{:2_41:}有人知道么,求解释
作者:
fmi110
时间:
2015-10-20 13:26
int a = 3;
System.out.println(a instanceof Integer);
复制代码
a是基本数据类型,Integer是引用数据类型,编译时就可以判断出问题了
至于前面的我也不是很清楚,这个跟instanceof的实现机制有关吧
我觉得 可能在编译时 就先检查 instanceof 两边的参数的字节码.class文件,如果
字节码文件不存在关系就直接抛出异常了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2