java數組空指針問題

在java中空指針異常算是一個比較棘手的問題,下面通過一個例子來講解一下怎麼處理空指針,以及出現空指針的問題

比如,我們先建好一個Book類,裏面包括name屬性和bNumber(統計書的總數),並寫出get和set方法。

再寫一個Test類,main方法中用數組保存100本書,並設置書的名稱,最後打印書的總數和書的名字。

Book類:

public class Book {

private String name;
private static int bNumber = 0;

    public String getName() {
        return name;
    }

    public static int getbNumber() {
        return bNumber;
    }

    public void setName(String name) {
        this.name = name;
    }

    public static void setbNumber(int bNumber)
    {
        Book.bNumber = bNumber;
    }

    Book(String name)
    {
        this.name = name;
        bNumber += 1;
    }

    Book()
    {
        bNumber += 1;
    }

}

接下來是Test類,定義一個數組保存一百本書,我們的第一想法就是Book[] bookname = new Book[100];  那寫完這些接下來呢,怎麼設置書名,是直接bookname[0].setname("《世界通史》"); ???。。。如果這樣的話,你寫完最後運行的時候會出現一個錯誤:Exception in thread "main" java.lang.NullPointerException。。。。這個就是空指針異常,錯在哪裏了呢。。。

我們可以回到建立數組的地方,Book[] bookname = new Book[100];,在這裏我們建立的數組,裏面的100個元素是什麼,是類對象?還是指針。。。答案是指針,100個指向Book類變量的指針,所以我們接下來就要給這100個元素賦值

for(int i=0;i<100;i++)
        {
            bookname[i] = new Book();
        }

這樣,我們就給100個元素(指針)賦了值。。。

那接下來就是賦值給他們書名以及輸出

Test類:

public class Test{

    public static void main(String[] args)
    {

        Book[] bookname = new Book[100];
        for(int i=0;i<100;i++)
        {
            bookname[i] = new Book();
        }
        bookname[0].setName("《世界通史》");
        bookname[1].setName("《中華上下五千年》");
        bookname[2].setName("《明朝那些事兒》");
        bookname[3].setName("《深入理解計算機系統》");

        for(int i=4;i<100;i++)
            bookname[i].setName("空");

        System.out.println("書籍總數: "+Book.getbNumber());

        for(int i=0;i<100;i++)
        {
            System.out.println(i + ". " + bookname[i].getName());
        }
    }

}

測試結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章