首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java Number 類與包裝類完全指南:自動裝箱拆箱、常用方法與數學運算

     編輯:Java 程式設計入門

Java Number 類與包裝類完全指南:自動裝箱拆箱、常用方法與數學運算

基本型別(byte, short, int, long, float, double)非物件。Java 為每種提供包裝類(Byte, Short, Integer, Long, Float, Double),皆繼承抽象類 Number。

Number 類繼承體系

自動裝箱與拆箱

JDK 1.5+ 編譯器自動在基本型別與包裝類間轉換:

Integer x = 5;        // 裝箱:Integer.valueOf(5)
x = x + 10;           // 拆箱:x.intValue() + 10 → 裝箱:Integer.valueOf(15)
System.out.println(x); // 15(toString)
頻繁裝箱拆箱有效能開銷,熱點迴圈建議用基本型別。

Number 共用方法(所有包裝類繼承)

方法說明
xxxValue()轉為對應基本型別(如 intValue()、doubleValue())
compareTo(Number)數值比較
equals(Object)值相等判斷
toString()字串表示

Integer / Long 等常用靜態方法

方法說明範例
valueOf(String) / valueOf(int)建立包裝物件(-128~127 快取)Integer.valueOf("123")
parseInt(String) / parseInt(String, radix)解析字串為基本型別parseInt("FF",16)=255
toString(int) / toString(int, radix)數值轉字串toString(255,16)="ff"
compare(a, b)比較兩基本型別值Integer.compare(5,3)=1
min/max(a, b)最小/最大值
sum(a, b)求和(JDK 1.8+)
bitCount / highestOneBit / numberOfLeadingZeros位運算工具

Math 類:數學運算利器

java.lang.Math 提供大量 static 方法:

分類方法範例
絕對值/極值abs, max, min
捨入ceil, floor, round, rint
指數/對數exp, log, log10, pow, sqrt
三角函數sin, cos, tan, asin, acos, atan, atan2
角度/弧度轉換toDegrees, toRadians
隨機數random() 返回 [0,1) double
精確運算 (JDK 1.8+)addExact, multiplyExact, toIntExact 溢位拋異常

常用範例

Math.max(10, 20);        // 20
Math.sqrt(16);           // 4.0
Math.pow(2, 10);         // 1024.0
Math.round(3.14);        // 3 (long)
Math.random();           // 0.0 ~ 1.0
Math.toRadians(180);     // π
Math.addExact(100, 200); // 300,溢位拋 ArithmeticException

BigInteger / BigDecimal:大數與精確小數

  • BigInteger: 任意精度整數,支援位運算、模運算、質數測試。
  • BigDecimal: 任意精度有理數,**金融計算必用**,避免浮點誤差。指定 MathContext 控制精度與捨入模式。
BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.2");
System.out.println(a.add(b)); // 0.3(精確)
// double: 0.1+0.2=0.30000000000000004

最佳實踐建議

  1. 集合、泛型、反射需用包裝類;運算密集型用基本型別。
  2. 比較包裝類數值用 equals() 或 compareTo(),禁用 ==(快取範圍外會失效)。
  3. 解析字串優先用 parseXxx 而非 valueOf(後者多一次裝箱)。
  4. 金額計算**務必**用 BigDecimal,建構子用 String 參數避免二進制誤差。
  5. 隨機數多執行緒用 ThreadLocalRandom,安全需求用 SecureRandom。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved