java:数字转string 报空指针_《java基础》我踩过三元运算符的坑
簡單介紹
三元運(yùn)算符(又稱三目運(yùn)算符)大家肯定肯定都使用過,我就簡單介紹一下,不在贅述。
三元元素的格式:【條件控制語句】 ? 【表達(dá)式1】 : 【表達(dá)式2】。
優(yōu)點(diǎn):
一些簡單的邏輯判斷三元運(yùn)算符可以簡化代碼,去除多余的 if-else 語句。
缺點(diǎn):
三元運(yùn)算符使用時(shí)必須有返回值,沒有返回值的表達(dá)式是不可以使用的。
使用時(shí)一點(diǎn)要注意,考慮好實(shí)際情況再進(jìn)行使用!
采坑經(jīng)歷
本人真實(shí)經(jīng)歷,分享給大家,希望大家可以少踩坑,早日成為大牛(每個(gè)程序員都有一個(gè)成為大牛的心,我也不例外。哈哈哈……)。話不多說直接上問題代碼。
/** * 真實(shí)代碼不方便透露,下列代碼是我模擬實(shí)現(xiàn)的。 */public class Demo2 { public static void main(String[] args) { // 初始化三個(gè)變量 Integer number1 = 20; Integer number2 = 30; Integer number3 = null; // 表達(dá)式 Integer result = number1 > number2 ? number1 + number2 : number3; System.out.printf("三元表達(dá)式的結(jié)果為:%d", result); }}就是上面的代碼代碼,大家能看出來錯(cuò)誤嗎?可能不仔細(xì)看發(fā)現(xiàn)不了問題,下面我把控制臺(tái)運(yùn)行結(jié)果展示出來。
看到這個(gè)錯(cuò)誤后我一愣,明明是拿包裝類接收的返回值?不應(yīng)該報(bào)空指針錯(cuò)誤的啊?然后我將class文件反編譯了一下,此時(shí)錯(cuò)誤一目了然。
真相大白!當(dāng)表達(dá)式1和表達(dá)式2進(jìn)行類型對(duì)齊時(shí)拋出了空指針異常。那么什么時(shí)候會(huì)出現(xiàn)類型對(duì)齊的情況呢?我總結(jié)了以下兩種會(huì)發(fā)出類型對(duì)齊的拆箱操作。
1.表達(dá)式一和表達(dá)式二有一個(gè)是基本數(shù)據(jù)類型。
2.表達(dá)式一和表達(dá)式二的值類型不一致,會(huì)強(qiáng)制拆箱升級(jí)成范圍更大的那個(gè)表達(dá)式的類型。
解決方案
解決方案非常簡單直接上代碼:
public static void main(String[] args) { Integer number1 = 20; Integer number2 = 30; Integer number3 = null; //將表達(dá)式的數(shù)據(jù)類型都轉(zhuǎn)換成統(tǒng)一的,就有效避免了該問題。 Integer result = number1 > number2 ? Integer.valueOf(number1 + number2) : number3; System.out.printf("三元表達(dá)式的結(jié)果為:%d", result);}為了讓大家看得更清楚我將上面代碼的.class文件進(jìn)行了反編譯:
今天的分享就到這了,如果你們喜歡我寫的文章的話記得不要吝嗇手中的贊呦!
如果放棄太早,你永遠(yuǎn)都不知道自己會(huì)錯(cuò)過什么!
總結(jié)
以上是生活随笔為你收集整理的java:数字转string 报空指针_《java基础》我踩过三元运算符的坑的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通过条件判断文本框是否隐藏_如何通过风速
- 下一篇: 引用wx.getclipboarddat