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

Java 資料型別轉換完整指南:基本型別、包裝類、字串、日期

     編輯:Java 相關知識

1. 基本型別與包裝類對照

基本型別位元數包裝類
boolean1Boolean
byte8Byte
char16Character
short16Short
int32Integer
long64Long
float32Float
double64Double
void—Void

基本型別儲存值,包裝類為物件,用於集合、泛型、null 語意等場合。

2. 常值表示法

  • 十六進位:0xFF, 0X9A
  • 八進位:0123, 034
  • 長整數:9L, 342L
  • 浮點數:1.3f (float), 1.3 (double)
  • 字元:'a', '\n', '\\'', '\\\"', '\\\\'

3. 基本型別相互轉換

自動轉型 (Widening)

byte/short/char → int → long → float → double
  • 運算式中自動提升:byte b=3; b=(byte)(b*3); 需強制轉回。
  • 方法多載匹配:實參較「小」,形參較「大」且最近者優先。

強制轉型 (Narrowing)

int n = (int) 3.14159; // 截斷小數
long l = 123L;
int i = (int) l;       // 可能溢位

4. 包裝類轉換 API

方向方法範例
基本 → 包裝建構子 / valueOf()Integer i = Integer.valueOf(123);
包裝 → 基本xxxValue()int n = i.intValue();
包裝 → 其他基本yyyValue()double d = i.doubleValue();

5. 字串與其他型別轉換

其他 → 字串

  1. String.valueOf(x) (靜態,通用)
  2. x.toString() (需非 null)
  3. x + "" (簡潔但產生中間物件)

字串 → 其他

  1. parseXxx() 靜態方法:Integer.parseInt("123"), Double.parseDouble("3.14")
  2. valueOf() 回傳包裝類:Integer.valueOf("123")
  3. new Wrapper("123").xxxValue()

6. 日期時間轉換

舊 API (java.util.Date / java.sql.*)

  • new Date(year, month, date) @Deprecated
  • new Date(millisSinceEpoch):長整數毫秒數
  • date.getTime() → long
  • SimpleDateFormat 格式化/解析(非執行緒安全)

現代 API (Java 8+ java.time)

類別用途關鍵方法
LocalDate無時區日期parse(), format(), atStartOfDay()
LocalTime無時區時間parse(), format()
LocalDateTime無時區日期時間parse(), format(), toInstant(zone)
Instant時間戳 (UTC)now(), toEpochMilli(), atZone(zoneId)
ZonedDateTime帶時區日期時間parse(), format(), withZoneSameInstant()
DateTimeFormatter格式化/解析ofPattern("yyyy-MM-dd HH:mm:ss")

互轉範例

// LocalDateTime ↔ Instant (需時區)
LocalDateTime ldt = LocalDateTime.now();
Instant instant = ldt.atZone(ZoneId.systemDefault()).toInstant();
LocalDateTime back = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();

// 舊 Date ↔ Instant
Date old = new Date();
Instant ins = old.toInstant();
Date newDate = Date.from(ins);

// 格式化
String formatted = ldt.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm"));

7. 最佳實踐清單

  1. 優先使用基本型別,效能最佳;集合/泛型/需 null 時用包裝類。
  2. 字串解析數字用 parseXxx(),拋出 NumberFormatException 需捕捉。
  3. 日期時間**一律改用 java.time**,避開 Date/Calendar 可變、非執行緒安全、時區混淆等坑。
  4. 格式化輸出用 DateTimeFormatter (不可變、執行緒安全)。
  5. 資料庫層:TIMESTAMP WITH TIME ZONE 對應 OffsetDateTime,DATE 對應 LocalDate。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved