Java自定義類數(shù)組報(bào)null的相關(guān)問題及解決
Java自定義類數(shù)組報(bào)null問題
不要沿用c++的想法。
java的數(shù)組分基本數(shù)據(jù)類型和引用類型
- 基本數(shù)據(jù)類型:如int[] s=new int[10]; 這里面創(chuàng)建了長(zhǎng)度為10的整型數(shù)組,并且自動(dòng)為每個(gè)元素創(chuàng)建了對(duì)象,即能找到相關(guān)地址
- 引用類型:如寫了個(gè)class student(){}, 在student[] s=new student[10]中只是new了數(shù)組空間,我們還要對(duì)s[0]-s[9]每一個(gè)創(chuàng)建對(duì)象,否則數(shù)組為null。
解決方法
for(int i=0;i<10;i++)
{
? ? s[i]=new student();
}可以理解為先創(chuàng)建了空數(shù)組,然后為每一個(gè)元素添加了屬于它的屬性。
實(shí)例:
設(shè)某一個(gè)班共有N(N=20)名學(xué)生,期末考試5門課程,請(qǐng)編一程序評(píng)定學(xué)生的獎(jiǎng)學(xué)金,要求打印輸出一、二等獎(jiǎng)學(xué)金學(xué)生的學(xué)號(hào)、姓名和各門課成績(jī)。 (獎(jiǎng)學(xué)金評(píng)定標(biāo)準(zhǔn)是:總成績(jī)超過全班總平成績(jī)20%發(fā)給一個(gè)獎(jiǎng)學(xué)金,超過全班總平成績(jī)10%發(fā)給二個(gè)獎(jiǎng)學(xué)金。)
Java自定義類二維數(shù)組出現(xiàn)NullPointerException錯(cuò)誤
自定義的類
package com.hbq.bugs;
// MyClass 類
public class MyClass {
public int s1;
public int getS1() {
return s1;
}
public void setS1(int s1) {
this.s1 = s1;
}
}主函數(shù)
package com.hbq.bugs;
public class App {
public static void main(String[] args) {
MyClass [][] c=new MyClass[10][10];
c[0][0].setS1(1);
}
}運(yùn)行會(huì)出現(xiàn)

進(jìn)入debug模式發(fā)現(xiàn)

c[0]的所有元素都是null。
這是由于引用對(duì)象不初始化默認(rèn)都為null的原因。
所以會(huì)有一個(gè)長(zhǎng)度為10的一維數(shù)組,每個(gè)一維數(shù)組的元素又是長(zhǎng)度為10的一維數(shù)組,這個(gè)數(shù)組里的元素默認(rèn)都為null。
所以要對(duì)每一行每一列進(jìn)行實(shí)例化賦值開拓新空間。
package com.hbq.bugs;
public class App {
public static void main(String[] args) {
MyClass[][] c = new MyClass[10][10];
// c[0][0].setS1(1);
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
c[i][j] = new MyClass();
}
}
c[0][0].setS1(1);
System.out.println(c[0][0].getS1());
}
}運(yùn)行成功!
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot集成XXL-JOB實(shí)現(xiàn)任務(wù)管理全流程
XXL-JOB 是一款輕量級(jí)分布式任務(wù)調(diào)度平臺(tái),功能豐富、界面簡(jiǎn)潔、易于擴(kuò)展,本文介紹如何通過 Spring Boot 項(xiàng)目,使用 RestTemplate 和 Feign 的方式調(diào)用 XXL-JOB 后臺(tái)管理接口,實(shí)現(xiàn)任務(wù)的全生命周期管理,需要的朋友可以參考下2025-08-08
MyBatisPlus如何優(yōu)化千萬級(jí)數(shù)據(jù)的CRUD
最近負(fù)責(zé)的一個(gè)項(xiàng)目,數(shù)據(jù)庫表量級(jí)破千萬,每次執(zhí)行 CRUD 都像走鋼絲,稍有不慎就引起數(shù)據(jù)庫報(bào)警,本文就結(jié)合這個(gè)項(xiàng)目的實(shí)戰(zhàn)經(jīng)驗(yàn),聊聊 MyBatis Plus在千萬級(jí)數(shù)據(jù)場(chǎng)景下如何優(yōu)化 CRUD2025-06-06
利用java模擬實(shí)現(xiàn)鍵盤鼠標(biāo)操作(附源碼)
這篇文章主要為大家詳細(xì)介紹了如何從零設(shè)計(jì)并實(shí)現(xiàn)一個(gè)功能完備的鍵盤鼠標(biāo)模擬庫,提供比原生?Robot?更友好的?API,更高的可定制性和可擴(kuò)展性,感興趣的小伙伴可以了解一下2025-05-05
springmvc實(shí)現(xiàn)跨服務(wù)器文件上傳功能
這篇文章主要為大家詳細(xì)介紹了springmvc實(shí)現(xiàn)跨服務(wù)器文件上傳功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
SpringBoot集成screw實(shí)現(xiàn)數(shù)據(jù)庫文檔生成的代碼示例
數(shù)據(jù)庫設(shè)計(jì)文檔是項(xiàng)目技術(shù)文檔的重要組成部分,Screw 是一款開源的數(shù)據(jù)庫文檔生成工具,它支持多種數(shù)據(jù)庫類型,并能生成豐富格式的文檔,本文將通過一個(gè)實(shí)際的例子,展示如何使用 Spring Boot 集成 Screw 生成數(shù)據(jù)庫設(shè)計(jì)文檔2024-07-07

