引用的缺省值–null
- null是引用类型的缺省值
- null代表空,不存在。可以读作空
- 引用类型的数组创建出来,初始值都是空
null带来的问题
- 大名鼎鼎的NullPointerException (NPE)
- 如果不确定,使用前先要判断引用是不是空
package classDemo;
public class CheckBeforeUse {
public static void main(String[] args) {
ClassTest1[] ct = new ClassTest1[9];
for(int i = 0; i<ct.length; i++){
if( i % 2 == 0){
ct[i] = new ClassTest1();
}
}
//可以打印null
System.out.println(ct[7]);
//应用类使用前先要判断是不是空
for(int i = 0; i<ct.length; i++){
if( ct[i] != null){
ct[i].name = "商品" + i;
}
}
for(int i = 0; i < ct.length; i++){
if(ct[i] != null){
System.out.println(ct[i].name);
}
}
}
}
执行结果:
null
商品0
商品2
商品4
商品6
商品8
Process finished with exit code 0
访问null的属性,报错
package classDemo;
public class CheckBeforeUse {
public static void main(String[] args) {
ClassTest1[] ct = new ClassTest1[9];
for(int i = 0; i<ct.length; i++){
if( i % 2 == 0){
ct[i] = new ClassTest1();
}
}
//不能访问null的任何属性
System.out.println(ct[7].name);
//ct[7].name = "不存在的商品,不存在的名字";
//应用类使用前先要判断是不是空
for(int i = 0; i<ct.length; i++){
if( ct[i] != null){
ct[i].name = "商品" + i;
}
}
for(int i = 0; i < ct.length; i++){
if(ct[i] != null){
System.out.println(ct[i].name);
}
}
}
}
Exception in thread "main" java.lang.NullPointerException
at classDemo.CheckBeforeUse.main(CheckBeforeUse.java:13)
Process finished with exit code 1