導航:首頁 > 編程語言 > java報空指針

java報空指針

發布時間:2022-07-16 23:16:06

① 關於java空指針異常

把代碼曬上來,你那是出現運行時空指針。就是有些指針指向的對象要語句運行了才有可能會跑出來的。比如一個方法返回一個List,你用一個List指針來接受這個方法的返回,但有可能這個方法返回的是空指針,這時你操作這個List指針所指向的對象時就會發生空指針異常。所以你上面的運行時出這個異常很正常。

② java取文件後綴名pdf什麼情況會報空指針

字元串變數未初始化會報空指針。

Java具有簡單性、面向對象、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。

發展歷程:

20世紀90年代,硬體領域出現了單片式計算機系統,這種價格低廉的系統一出現就立即引起了自動控制領域人員的注意,因為使用它可以大幅度提升消費類電子產品(如電視機頂盒、麵包烤箱、行動電話等)的智能化程度。

Sun公司為了搶占市場先機,在1991年成立了一個稱為Green的項目小組,帕特里克、詹姆斯·高斯林、麥克·舍林丹和其他幾個工程師一起組成的工作小組在加利福尼亞州門洛帕克市沙丘路的一個小工作室裡面研究開發新技術,專攻計算機在家電產品上的嵌入式應用。

③ java編程中使用迭代器為什麼會報空指針錯誤

空指針主要發生在調用了,一個值為null的對象的方法或者屬性上面,通過debug模式可以調試查看哪個對象為null,然後找到原因,最好建議將代碼貼出來。

④ 以下Java程序空指針異常的原因解釋(寫原因)

for
(int
index
=
0;
index
<
50;
index++)
{
在這個循環加一個判斷你數組50個肯定沒用完當你循環到空的時候當然報空指針了
加一個判斷
if(ds.name[index]==null)
{
break;
}

⑤ java中的空指針異常怎麼解決

原文:https://www.hu.com/question

你這個問題的解決

問題定位:

在堆棧異常信息的第一行就可以定位到是哪裡出了空指針,倘若這里不是你寫的類,可以往下翻一下,找到你寫的類,就是這里出現的空指針。

問題解決:

對一個空對象調用裡面的方法或者屬性的時候會報空指針,檢查這個對象為什麼是空即可。

Java 空指針異常的若干解決方案

Java 中任何對象都有可能為空,當我們調用空對象的方法時就會拋出 NullPointerException 空指針異常,這是一種非常常見的錯誤類型。我們可以使用若干種方法來避免產生這類異常,使得我們的代碼更為健壯。本文將列舉這些解決方案,包括傳統的空值檢測、編程規范、以及使用現代 Java 語言引入的各類工具來作為輔助。

運行時檢測

最顯而易見的方法就是使用 if (obj == null) 來對所有需要用到的對象來進行檢測,包括函數參數、返回值、以及類實例的成員變數。當你檢測到 null 值時,可以選擇拋出更具針對性的異常類型,如 IllegalArgumentException,並添加消息內容。我們可以使用一些庫函數來簡化代碼,如 Java 7 開始提供的 Objects#requireNonNull 方法:

public void testObjects(Object arg) {
Object checked = Objects.requireNonNull(arg, "arg must not be null");
checked.toString();}

Guava 的 Preconditions 類中也提供了一系列用於檢測參數合法性的工具函數,其中就包含空值檢測:

public void testGuava(Object arg) {
Object checked = Preconditions.checkNotNull(arg, "%s must not be null", "arg");
checked.toString();
}

我們還可以使用 Lombok 來生成空值檢測代碼,並拋出帶有提示信息的空指針異常:

public void testLombok(@NonNull Object arg) {
arg.toString();

生成的代碼如下:

public void testLombokGenerated(Object arg) {
if (arg == null) {
throw new NullPointerException("arg is marked @NonNull but is null");
}
arg.toString();
}

這個註解還可以用在類實例的成員變數上,所有的賦值操作會自動進行空值檢測。

編程規范

·通過遵守某些編程規范,也可以從一定程度上減少空指針異常的發生。

使用那些已經對 null 值做過判斷的方法,如 String#equals、String#valueOf、以及三方庫中用來判斷字元串和集合是否為空的函數:

if (str != null && str.equals("text")) {}
if ("text".equals(str)) {}

if (obj != null) { obj.toString(); }
String.valueOf(obj); // "null"

// from spring-core
StringUtils.isEmpty(str);
CollectionUtils.isEmpty(col);
// from guava
Strings.isNullOrEmpty(str);
// from commons-collections4
CollectionUtils.isEmpty(col);

·如果函數的某個參數可以接收 null 值,考慮改寫成兩個函數,使用不同的函數簽名,這樣就可以強制要求每個參數都不為空了:

public void methodA(Object arg1) {
methodB(arg1, new Object[0]);
}

public void methodB(Object arg1, Object[] arg2) {
for (Object obj : arg2) {} // no null check
}

·如果函數的返回值是集合類型,當結果為空時,不要返回 null 值,而是返回一個空的集合;如果返回值類型是對象,則可以選擇拋出異常。Spring JdbcTemplate 正是使用了這種處理方式:

// 當查詢結果為空時,返回 new ArrayList<>()
jdbcTemplate.queryForList("SELECT * FROM person");

// 若找不到該條記錄,則拋出
jdbcTemplate.queryForObject("SELECT age FROM person WHERE id = 1", Integer.class);

// 支持泛型集合
public <T> List<T> testReturnCollection() {
return Collections.emptyList();
}

靜態代碼分析

Java 語言有許多靜態代碼分析工具,如 Eclipse IDE、SpotBugs、Checker Framework 等,它們可以幫助程序員檢測出編譯期的錯誤。結合 @Nullable 和 @Nonnull 等註解,我們就可以在程序運行之前發現可能拋出空指針異常的代碼。

但是,空值檢測註解還沒有得到標准化。雖然 2006 年 9 月社區提出了 JSR 305 規范,但它長期處於擱置狀態。很多第三方庫提供了類似的註解,且得到了不同工具的支持,其中使用較多的有:

閱讀全文

與java報空指針相關的資料

熱點內容
成人兩性微電影 瀏覽:406
台灣三級的絕版老電影 瀏覽:157
電影雙男主肉 瀏覽:983
重生之北美建國 瀏覽:128
每天工作4小時的程序員 瀏覽:461
香港學生犯罪電影 瀏覽:867
0855aa 瀏覽:504
哪裡買小電影軟體 瀏覽:856
無法連接伺服器上不了怎麼處理 瀏覽:247
android怎樣讀 瀏覽:615
螺紋底經演算法 瀏覽:781
西門子plc編程官網 瀏覽:611
寶寶吃進口燕窩溯源碼 瀏覽:319
重生國民黨殘軍稱王小說 瀏覽:531
鐵路停時演算法 瀏覽:699
姜恩惠主演的電影 瀏覽:987
保存密碼刪除文件夾 瀏覽:321
島國電影app 瀏覽:547
從命令模式切換為編輯模式 瀏覽:95
南京噪音小壓縮機配件 瀏覽:433