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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© itisdream 中级黑马   /  2014-7-5 21:33  /  1524 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ArrayList<Integer> collection3 = new ArrayList<Integer>();
collection3.add(5);
collection3.add(6);
int i = Integer.valueOf("abc").intValue();
collection3.add(i);
System.out.println("collection3====="+collection3);
编译可以通过,运行有错为什么?

5 个回复

倒序浏览
本帖最后由 黎志勇 于 2014-7-5 21:47 编辑
  1. int i = Integer.valueOf("abc").intValue();
复制代码

把一个非数字字符串"abc"转成整形的数字,那怎么转?当然报异常。往里面填个"100"之类的数字字符串就可以了,注意不要超过int的数值范围。
回复 使用道具 举报
编译时只检查基本的语法错误 ,逻辑上错误只能在运行时才晓得
回复 使用道具 举报
本帖最后由 ⋛⋌⋚JEEP 于 2014-7-5 23:55 编辑

楼上的说法都很对!就此简单表述一下:

  1. int i = Integer.valueOf("abc").intValue();创建一个字符串,由于该字符串的值不能解析为整数包装类类型Integer,所以抛出异常;编译时,你已经抛出异常了,语法没错,可以通过;但是运行时,逻辑上出错,所以报错。
  2. 建议改成以下代码演示一下:
  3. String stri =new String("0123");  //创建一个数字字符串。数字大小值域[-2^31~(2^31-1)]。
  4. int str=Integer.valueOf(stri).intValue();//valueOf:返回String的值的Integer对象; intValue:返回Integer对象的int类型。
  5. System.out.println(str);
复制代码

{:3_57:}

点评

这种情况,语法没问题的, 没抛异常编译也不会报错吧。  发表于 2014-7-6 11:53
回复 使用道具 举报
⋛⋌⋚JEEP 发表于 2014-7-5 23:51
楼上的说法都很对!就此简单表述一下:

luheiqi,说的没错,语法不错,不抛异常编译一样能通过的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马