查克没有界限

L. *_*ana 1 java

起初是开个玩笑,但我真的不明白为什么我的程序不会崩溃:

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)

Sot*_*lis 5

因为你回来了 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)

因为arraynull.