A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

程序一:

  1. <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

程序二:
  1. class TestDemo
  2. {
  3.      public static void main(String[] args){
  4. System.out.println("aaa" instanceof Integer);
  5. }}
复制代码
编译失败,错误提示为:
  1. TestDemo.java:4: 错误: 不兼容的类型: String无法转换为Integer
  2. System.out.println("aaa" instanceof Integer);
  3.                               ^
  4. 1 个错误
复制代码

这是为什么呢,我只是判断比较,又不是赋值,为什么出现在这样的提示?
程序三:
  1. class TestDemo
  2. {
  3.      public static void main(String[] args){
  4.         Integer a = 3;
  5. System.out.println(a instanceof Integer);
  6. }}
复制代码
编译通过,打印结果为true
程序四:
  1. class TestDemo
  2. {
  3.      public static void main(String[] args){
  4.         Integer a = 3;
  5. System.out.println(a instanceof String);
  6. }}
复制代码

结果
  1. TestDemo.java:5: 错误: 不兼容的类型: Integer无法转换为String
  2. System.out.println(a instanceof String);
  3.                    ^
  4. 1 个错误
复制代码
应该是同样问题,为什么呢?
还有,当代码这样写:
  1. int a = 3;
  2.         System.out.println(a instanceof Integer);
复制代码
  1. TestDemo.java:5: 错误: 意外的类型
  2. System.out.println(a instanceof Integer);
  3.                    ^
  4.   需要: 引用
  5.   找到:    int
  6. 1 个错误
复制代码
会出现上面的错误,又是为什么呢?




5 个回复

倒序浏览
顶一下,有人知道吗
回复 使用道具 举报
楼主   可真会玩!
回复 使用道具 举报
jlq 中级黑马 2015-10-19 12:44:16
板凳
楼主真会玩
回复 使用道具 举报
{:2_41:}有人知道么,求解释
回复 使用道具 举报
  1. int a = 3;
  2.         System.out.println(a instanceof Integer);
复制代码

a是基本数据类型,Integer是引用数据类型,编译时就可以判断出问题了
至于前面的我也不是很清楚,这个跟instanceof的实现机制有关吧
我觉得 可能在编译时 就先检查 instanceof 两边的参数的字节码.class文件,如果
字节码文件不存在关系就直接抛出异常了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马