黑马程序员技术交流社区
标题:
编译通过,运行报错,为什么?
[打印本页]
作者:
itisdream
时间:
2014-7-5 21:33
标题:
编译通过,运行报错,为什么?
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);
编译可以通过,运行有错为什么?
作者:
黎志勇
时间:
2014-7-5 21:38
本帖最后由 黎志勇 于 2014-7-5 21:47 编辑
int i = Integer.valueOf("abc").intValue();
复制代码
把一个非数字字符串"abc"转成整形的数字,那怎么转?当然报异常。往里面填个"100"之类的数字字符串就可以了,注意不要超过int的数值范围。
作者:
endian11
时间:
2014-7-5 21:56
编译时只检查基本的语法错误 ,逻辑上错误只能在运行时才晓得
作者:
⋛⋌⋚JEEP
时间:
2014-7-5 23:51
本帖最后由 ⋛⋌⋚JEEP 于 2014-7-5 23:55 编辑
楼上的说法都很对!就此简单表述一下:
int i = Integer.valueOf("abc").intValue();创建一个字符串,由于该字符串的值不能解析为整数包装类类型Integer,所以抛出异常;编译时,你已经抛出异常了,语法没错,可以通过;但是运行时,逻辑上出错,所以报错。
建议改成以下代码演示一下:
String stri =new String("0123"); //创建一个数字字符串。数字大小值域[-2^31~(2^31-1)]。
int str=Integer.valueOf(stri).intValue();//valueOf:返回String的值的Integer对象; intValue:返回Integer对象的int类型。
System.out.println(str);
复制代码
{:3_57:}
作者:
⋛⋌⋚JEEP
时间:
2014-7-7 00:10
⋛⋌⋚JEEP 发表于 2014-7-5 23:51
楼上的说法都很对!就此简单表述一下:
luheiqi,说的没错,语法不错,不抛异常编译一样能通过的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2