Arraylist中不同數據類型的添加以及printf的輸出規則


  前兩天被大哥問到一個問題,即如何實現在Integer類型的ArrayList數組中添加String類型的數據、在String類型的ArrayList數組中添加Integer類型的數據,並且他們在輸出的過程中會有什么問題,為什么有這種問題。

  以下通過代碼給大家展示一下:

  Integer中添加String類型:

  

  String類型中添加Integer類型:

  

  這兩者代碼基本一致,都是通過反射的方式將數據添加到數組中從而避免報錯,但是在執行的過程中卻不一樣,以下是執行結果:

    

  沒錯,在String類型的數組中添加Integer類型的數據在輸出的時候發生了強制類型轉換的錯誤,開始我也百思不得其解,后來我大哥給我看了看println函數的內部實現過程才煥然大悟,以下貼上代碼:

這是非String類型的輸出過程,可以看出,所有的輸出對象都通過String.valueof方法轉換成了String類型,故而Integer中加入String類型也都是通過String類型的方式輸出,不會報錯。  

  這是String類型的輸出過程,可以看出,String類型的輸出沒有調用轉換方法,那么在String類型的數組中添加了Integer之后,會將Integer類型的數據當中String來輸出,自然會出現強制類型轉換的錯誤。

  

  以上純屬個人見解,如有不同見解,敬請留言。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM