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