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