有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Chuck没有界限

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

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);
        }

    }

}

共 (1) 个答案

  1. # 1 楼答案

    因为您返回false

    public boolean HaveBounds(int i)
    {
        System.out.println("Because Chuck Norris knows no bounds.");
        return false;
    }
    

    因此你永远无法到达

    char test = chuckNorris.getArrayId(i);
    

    尝试访问阵列的

    如果它返回true,您将在对的调用中得到一个NullPointerException

    public char getArrayId(int i)
    {
        return array[i];
    }
    

    因为arraynull