package myFirst;public class TestBox {
Integer i;
int j;
public static void main(String[] args) {
TestBox t = new TestBox();
t.go();
}
public void go() {
j = i;
System.out.println(j);
System.out.println(i);
}
}抛出异常如下:
Exception in thread "main" java.lang.NullPointerException
at myFirst.TestBox.go(TestBox.java:11)
at myFirst.TestBox.main(TestBox.java:8)
Integer i;
int j;
public static void main(String[] args) {
TestBox t = new TestBox();
t.go();
}
public void go() {
j = i;
System.out.println(j);
System.out.println(i);
}
}抛出异常如下:
Exception in thread "main" java.lang.NullPointerException
at myFirst.TestBox.go(TestBox.java:11)
at myFirst.TestBox.main(TestBox.java:8)
1. 字符串变量未初始化;
String类型的对象可以做如下判断if(rb!==null&&!"".equals(rb))
……
当然还可以多做一个判断,是否不为空字符串
if(rb!==null&&!"".equals(rb.trim()))
2. 接口类型的对象没有用具体的类初始化,比如:
List lt; 会报错
List lt = new ArrayList(); 则不会报错了
3. 当一个对象的值为空时,你没有判断为空的情况。
你可以试着把下面的代码加一行代码:
if(rb!=null);你的问题是对基本数据类型和引用数据类型较为模糊,建议你看下引用数据类型的自动拆装箱原理,具体可参考这个网址http://bbs.bjsxt.com/thread-5530-1-1.html
我也在正在学习JAVA,欢迎互相交流!
j = i.intValue(); 而你的i 未赋值所以是null 用null 去掉用方法就会出现空指针异常(java.lang.NullPointerException).
所以你有以下几种做法:
1.把 j = i;改为i = j; 这个是“自动装箱”的过程,int类型的变量初始化之后是0 所以他实际上执行的是 i = new Integer(j);这个没什么问题;
2.在j = i ; 之前给i赋值 如: i = 2;