日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Integer.valueof(null)报错

發布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Integer.valueof(null)报错 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文??http://javacat360.iteye.com/blog/2024378 主題?Java 昨天,一同事問我一個問題,估計是他前段日子面試遇到的?
問題很簡單,String.valueof(null)的返回值?
起初我想了想,應該是String類型的字面量null,可后來上機一試才發現原來返回空指針異常?
查看String源碼,發現valueof方法被重載多次,其中String.valueof(null)卻意外的進入了valueof(char[] data)方法,如下圖所示?

valueof(char[] data)方法直接進入String構造器?
public static String valueOf(char data[]) {return new String(data); } 內部會獲取char[]的length,因此返回空指針異常?
public String(char value[]) {this.value = Arrays.copyOf(value, value.length); } 為何眾多的valueof重載方法沒有選擇別的,而選擇了valueof(char[] data)呢,為什么不選valueof(object)呢??
查閱了相關資料,發現stackoverflow上也有人提出過?
http://stackoverflow.com/questions/4042675/why-string-valueofnull-is-causing-null-pointer-exception?
大體意思就是在多個重載方法均能匹配的條件下,優先會選擇精度高的那個,或者說范圍小的那個,那上面的問題就明朗了,char[]是繼承自object的(java中數組也是一種特殊的object),因此優先選擇精度高的char[]?
例如:?
public static void main(String[] args) {test(null); //此處將返回arraylist,因為list同arraylist存在繼承或實現的上下級關系 } static void test(List list) { System.out.println("list"); } static void test(ArrayList list) { System.out.println("arraylist"); } 又因為構造函數是編譯時期確定的?
因此如下代碼將無法通過編譯,因為String同Integer不存在任何關系,他們都繼承自Object,他們的公共父類是object(String和String[]也是一樣的道理),因此無法通過編譯?
public static void main(String[] args) {test(null); //本行會編譯報錯 } static void test(String str) { System.out.println("string"); } static void test(Integer num) { //如果修改為int,則編譯通過 System.out.println("integer"); }

轉載于:https://www.cnblogs.com/zl1991/p/5356450.html

總結

以上是生活随笔為你收集整理的Integer.valueof(null)报错的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。