空指针异常
1.publicclassBoxer1{2.Integeri;3.intx;4.publicBoxer1(inty){5.x=i+y;6.System.out.print...
1. public class Boxer1{
2. Integer i;
3. int x;
4. public Boxer1(int y) {
5. x = i+y;
6. System.out.println(x);
7. }
8. public static void main(String[] args) {
9. new Boxer1(new Integer(4));
10. }
11. }
我想,运行时第5行会报错,可是为什么是空指针异常?
Integer i 没有初始化,值为null造成错误,
空指针异常解释应该是,空值调用方法时,返回空指针异常,
可题目中,只是值为空,却参加了运算,
是调用了自动拆箱方法么?
晕倒,大家不确定,就乱答,做程序员要务实,以事实说话,怎么信口开河
程序,我当然run过,报的是运行错误,
我把分给四楼的哥们儿,enolong ,我也觉得应该是拆箱时造成的抛出异常。
最后,谢谢大家~ 展开
2. Integer i;
3. int x;
4. public Boxer1(int y) {
5. x = i+y;
6. System.out.println(x);
7. }
8. public static void main(String[] args) {
9. new Boxer1(new Integer(4));
10. }
11. }
我想,运行时第5行会报错,可是为什么是空指针异常?
Integer i 没有初始化,值为null造成错误,
空指针异常解释应该是,空值调用方法时,返回空指针异常,
可题目中,只是值为空,却参加了运算,
是调用了自动拆箱方法么?
晕倒,大家不确定,就乱答,做程序员要务实,以事实说话,怎么信口开河
程序,我当然run过,报的是运行错误,
我把分给四楼的哥们儿,enolong ,我也觉得应该是拆箱时造成的抛出异常。
最后,谢谢大家~ 展开
8个回答
展开全部
空指针异常就是一个指针是空指针,你还要去操作它,既然它指向的是空对象,它就不能使用这个对象的方法;比如上面的s假如为null,你还要用s的方法。
空指针正常工作意义:
在许多语言,这不是一个单独的转义序列,而是八进制转义序列,单个八进制数字为0;因此,‘\0’不能跟随任何数字0通过7;否则它被解释为更长的八进制转义序列的开始。被在使用中发现各种语言的其他转义序列\000,\x00,\z,或的Unicode表示\u0000。
表示空字符的能力并不总是意味着生成的字符串将被正确解释,因为许多程序将认为null作为字符串的结尾。因此,键入它的能力(在未经检查的用户输入的情况下)会创建一个称为空字节注入的漏洞,并可能导致安全漏洞。
空字符以逗号表示是^@。在Windows上,可以通过按住Ctrl键,然后按@(这通常需要同时按下⇧Shift并按下数字2键)。
展开全部
你已经揭示了错误的原因了啊:空指针异常解释应该是,空值调用方法时,返回空指针异常,
你的第五行 i 的值是null,而且参加了第五行表达式的运算,根据装箱和拆箱的逻辑,第五行代码等价于:
x = (i+y).intValue();
而i.intValue();就直接导致了空指针异常,一个null的对象怎么可能去intValue();
所以肯定会错啊。
这里的确涉及到自动拆箱的思想。
祝你好运
希望能够帮到你
你的第五行 i 的值是null,而且参加了第五行表达式的运算,根据装箱和拆箱的逻辑,第五行代码等价于:
x = (i+y).intValue();
而i.intValue();就直接导致了空指针异常,一个null的对象怎么可能去intValue();
所以肯定会错啊。
这里的确涉及到自动拆箱的思想。
祝你好运
希望能够帮到你
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
恩。。你都说了呀。。。
integer 的异常呀。。
integer是一个封装类。。需要初始化的。。和int不同
integer 的异常呀。。
integer是一个封装类。。需要初始化的。。和int不同
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第二行 Integer 是引用类型的 要new
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int类型的变量作为全局变量时会被默认赋值, 所以你这里写int i; 即使没有赋值也不会报错, 但是你如果在方法中写int类型变量不赋值则编译都无法通过
Integer是int的封装类;i nteger 是对象,用一个引用指向这个对象;Integer 是一个类,是int的扩展,定义了很多的转换方法。所以在调用的时候必须初始化, 否则将跑出空指针异常
Integer是int的封装类;i nteger 是对象,用一个引用指向这个对象;Integer 是一个类,是int的扩展,定义了很多的转换方法。所以在调用的时候必须初始化, 否则将跑出空指针异常
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询