起初是开个玩笑,但我真的不明白为什么我的程序不会崩溃:
public class ChuckNorris {
char[] array;
public boolean HaveBounds(int i)
{
System.out.println("Because Chuck Norris knows no bounds.");
return false;
}
public ChuckNorris()
{
array = null;
}
public char getArrayId(int i)
{
return array[i];
}
}
public class Main {
public static void main(String[] args) {
int i = 12;
ChuckNorris chuckNorris = new ChuckNorris();
if(chuckNorris.HaveBounds(i))
{
char test = chuckNorris.getArrayId(i);
System.out.println(test);
}
}
}
Run Code Online (Sandbox Code Playgroud)
因为你回来了 false
public boolean HaveBounds(int i)
{
System.out.println("Because Chuck Norris knows no bounds.");
return false;
}
Run Code Online (Sandbox Code Playgroud)
因此你永远不会达到
char test = chuckNorris.getArrayId(i);
Run Code Online (Sandbox Code Playgroud)
它试图访问该数组.
如果它返回true,你会得到一个NullPointerException电话
public char getArrayId(int i)
{
return array[i];
}
Run Code Online (Sandbox Code Playgroud)
因为array是null.