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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 静心远行 于 2013-12-27 12:50 编辑

代码:
  1. public class test5 {
  2.         public static void main(String args[])
  3.         {
  4.                 Integer i1 =  new Integer('A');
  5.                 Integer i2 = new Integer("7");
  6.                 Integer i3 = new Integer("0x10");
  7.                 Character c = new Character('A');
  8.                 Boolean b = new Boolean(null);
  9.                
  10.                 System.out.println(i1);
  11.                 System.out.println(i2);
  12.                 System.out.println(i3);      //运行出错
  13.                 System.out.println(c);
  14.                 System.out.println(b);
  15.                
  16.         }
  17. }
复制代码
这些对象中只有i3在执行时出错,是不是说明java语言完全不认十六进制?
boolean这个类实例化时是怎么样的,它是怎么实例化的,它实例化时除了可以使null这个参数还能是哪些参数呢?

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
你i3那项里面的"0x10"是当作了一个字符串传,对应走了Integer类里面的Integer(String s)的构造,所以是当作了字符串,"0x10"里面x是字母,不是数字型的字符,所以肯定会报错,应该是数字字符格式异常吧.这跟16进制没关系,因为他构造只有两种,一种放int型数据,一种放String型(数字字符组成)字符串.
而你上面之所以'A'可以,是因为'A'可以看作是int的引用,给了char的对象.多态的思想.

至于那个Boolean b=new Boolean(null);他构造Boolean(String s)里说的明明白白,就是传进去的是null的话,就分配一个false的Boolean对象,不是的话只要是true,忽略大小写,都是返回一个true的Boolean对象.

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
Integer(String s)
          构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。
构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。使用与 parseInt 方法(对基数为 10 的值)相同的方式将该字符串转换成 int 值。

查看API就会得出为什么会出异常了。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 鼓励分+1

查看全部评分

回复 使用道具 举报
高亮亮 发表于 2013-12-26 22:11
你i3那项里面的"0x10"是当作了一个字符串传,对应走了Integer类里面的Integer(String s)的构造,所以是当作了 ...

谢谢,受教了~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马