黑马程序员技术交流社区

标题: Integer等对象的一些问题,理解的请指教,不理解的同样可.... [打印本页]

作者: 静心远行    时间: 2013-12-26 21:48
标题: Integer等对象的一些问题,理解的请指教,不理解的同样可....
本帖最后由 静心远行 于 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这个参数还能是哪些参数呢?

作者: 高亮亮    时间: 2013-12-26 22:11
你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对象.
作者: (0.0)’    时间: 2013-12-26 22:15
Integer(String s)
          构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。
构造一个新分配的 Integer 对象,它表示 String 参数所指示的 int 值。使用与 parseInt 方法(对基数为 10 的值)相同的方式将该字符串转换成 int 值。

查看API就会得出为什么会出异常了。
作者: 静心远行    时间: 2013-12-27 12:50
高亮亮 发表于 2013-12-26 22:11
你i3那项里面的"0x10"是当作了一个字符串传,对应走了Integer类里面的Integer(String s)的构造,所以是当作了 ...

谢谢,受教了~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2