摘要:問題描述重構計量項目后臺,運行單元測試時,遇到了錯誤。是基本數據類型,默認值為為類類型,默認值為。運行單元測試,通過總結有時候,很多奇奇怪怪的問題,往往都有很簡單的解釋,只是我們一時沒想到。
問題描述
重構計量項目后臺,運行單元測試時,遇到了錯誤。
第145行:
又沒有在null上調方法,兩個Double相乘,怎么會空指針呢?
嘗試打開IDEA新建一個普通的Java項目。
doublepackage com.mengyunzhi; public class Main { double testDouble; private void test() { System.out.println(testDouble); double result = testDouble * 10; } public static void main(String[] args) { Main main = new Main(); main.test(); } }
運行結果:
Doublepackage com.mengyunzhi; public class Main { Double testDouble; private void test() { System.out.println(testDouble); Double result = testDouble * 10; } public static void main(String[] args) { Main main = new Main(); main.test(); } }
運行結果:
分析看了兩個運行結果,大體應該就能分析出來原因了。
Double是double的包裝類。double是基本數據類型,默認值為0.0;Double為類類型,默認值為null。
就像將Double對象賦值給基本類型double時,是不會報錯的,因為有一層隱式調用,將Double轉化為double。
而我猜想這里的空指針應該也和這個有關系,對象是沒法乘的,所以隱式調用轉化為double,然后再運算。
因為沒有初始化,所以Double對象默認是null,在null隱式調用方法,所以就空指針異常。
解決實例化的時候維護上倍數。
運行單元測試,通過!
總結有時候,很多奇奇怪怪的問題,往往都有很簡單的解釋,只是我們一時沒想到。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71689.html
摘要:不久前發現有一個第三方庫可以在一定程度上幫助我們從體力勞動中解救出來,它就是。來看自動生成的方法中對于數組采用的是。檢查傳入對象是否為,若為,則拋出異常。比如自動拋受檢異常,而無需顯式在方法上使用語句。 前言 Laziness is a virtue!每當寫pojo類時,都會重復寫一些setter/getter/toString方法等大量的模版代碼,無聊繁瑣卻又不得不做,這會讓這個類變...
摘要:案例演示該句運行時發生了數組索引越界異常,由于沒有處理異常,導致程序無法繼續執行,程序結束。用來進行某種異常的捕獲,實現對捕獲到的異常進行處理。運行時期異常一旦發生需要程序人員修改源代碼。 01異常的概述 * A: 異常的概述 * a:什么是異常 * Java代碼在運行時期發生的問題就是異常。 * b:異常類 * 在Java中,把異常信息...
摘要:在中存在兩種類型基本類型和引用類型。值得注意的是,基本類型的值的狀態不會被共享。浮點類型和它們的值中的浮點類型遵循標準的定義。布爾類型和它們的值類型表示兩個邏輯量,和。 眾所周知,Java是一門靜態類型的語言,這意味著所有的變量和表達式的類型會在編譯時確定。同時,Java 還是一門強類型的語言,因此變量的值或表達式的結果的類型都會受到限制(比如一個聲明為 String 的變量不的值不可...
摘要:每個用的孩子都應該了解下主要依賴編譯時代碼生成技術,幫你自動生成基于模板的常用的代碼,譬如最常見的與。另一種是通過類似于這樣基于注解的在運行時利用反射動態添加,不過這樣的缺陷是會影響性能,并且有一定局限性。 Lombok 每個用Java的孩子都應該了解下Lombok Lombok主要依賴編譯時代碼生成技術,幫你自動生成基于模板的常用的Java代碼,譬如最常見的Getter與Setter...
摘要:使用方法能以簡單的注解形式來簡化代碼,提高開發人員的開發效率。能通過注解的方式,在編譯時自動為屬性生成構造器方法。出現的神奇就是在源碼中沒有和方法,但是在編譯生成的字節碼文件中有和方法。沒法實現多種參數構造器的重載。 1 Lombok背景介紹 官方介紹如下: Project Lombok makes java a spicier language by addi...
閱讀 3310·2023-04-25 19:42
閱讀 1329·2021-11-23 10:11
閱讀 2252·2021-11-16 11:51
閱讀 1590·2019-08-30 15:54
閱讀 2036·2019-08-29 18:44
閱讀 1609·2019-08-23 18:24
閱讀 494·2019-08-23 17:52
閱讀 1764·2019-08-23 15:33