package test;public class AssignTest {
public long[][] time = null;
public AssignTest() {
} public void setArray(long[][] a) {
a = new long[3][4];
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
a[i][j] = i * j;
}
}
} public void printArray() { setArray(this.time);//通过这个函数对成员变量进行赋值
for (int i = 0; i < time.length; i++) {
for (int j = 0; j < time[i].length; j++) {
System.out.println(time[i][j]);
}
}
} public static void main(String[] args) {
AssignTest at = new AssignTest();
at.printArray();
}
}
java.lang.NullPointerException at test.AssignTest.printArray(AssignTest.java:20) at test.AssignTest.main(AssignTest.java:29)Exception in thread "main"
public long[][] time = null;
public AssignTest() {
} public void setArray(long[][] a) {
a = new long[3][4];
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
a[i][j] = i * j;
}
}
} public void printArray() { setArray(this.time);//通过这个函数对成员变量进行赋值
for (int i = 0; i < time.length; i++) {
for (int j = 0; j < time[i].length; j++) {
System.out.println(time[i][j]);
}
}
} public static void main(String[] args) {
AssignTest at = new AssignTest();
at.printArray();
}
}
java.lang.NullPointerException at test.AssignTest.printArray(AssignTest.java:20) at test.AssignTest.main(AssignTest.java:29)Exception in thread "main"
里。
public void setArray() {
time = new long[3][4];
for (int i = 0; i < time.length; i++) {
for (int j = 0; j < time[i].length; j++) {
time[i][j] = i * j;
}
}
}
for (int i = 0; i < time.length; i++) { //time为null有异常
for (int j = 0; j < time[i].length; j++) {
System.out.println(time[i][j]);
}
}
}
其实在这段程序一直没有对time进行初始化,一直为null,setArray(this.time)对time根本没处理,就跟
setArray(null)一样
这个问题是一个十分典型的关于java reference的问题,而大多数朋友在这样的问题上产生的困惑源自于C\C++的机制,因为在关于reference传递的问题上,JAVA 与 C\C++