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

Java 常用資料型別轉換完全手冊:基本型別、字串與包裝類別互轉

     編輯:Java 相關知識

Java 開發中,基本型別、包裝類別與字串之間的轉換是高頻操作。本文系統整理 10 大類轉換場景,提供標準 API 用法與程式碼範例,涵蓋數值型別縮寬轉換、字串解析、字元處理與布林判斷,幫助開發者快速查閱並避免常見陷阱。

一、基本數值型別之間的轉換

1.1 short ↔ int(代表性:較小型別 ↔ 較大型別)

// short → int:自動擴寬轉換,無需強制轉型
short shortVar = 100;
int intVar = shortVar;  // 隱式轉換,安全無損失

// int → short:窄化轉換,需強制轉型,可能溢位截斷
intVar = 50000;
shortVar = (short) intVar;  // 結果:-15536 (高位截斷)
System.out.println(shortVar);

規則:byte → short → int → long → float → double 為自動擴寬方向;反向需強制轉型,注意資料損失。

二、基本數值型別 → String

統一使用 String.valueOf(基本型別) 靜態方法,最通用且無需實例化:

int i = 42;
float f = 3.14f;
double d = 2.71828;
char c = '中';
boolean b = true;

String s1 = String.valueOf(i);   // "42"
String s2 = String.valueOf(f);   // "3.14"
String s3 = String.valueOf(d);   // "2.71828"
String s4 = String.valueOf(c);   // "中"
String s5 = String.valueOf(b);   // "true"

等價寫法:Integer.toString(i)、Double.toString(d) 等型別專屬方法,效能略優但通用性較低。

三、String → 基本數值型別 / 包裝類別

3.1 解析為包裝類別(推薦,支援 null 檢查與快取)

String intStr = "100";
String floatStr = "3.14";
String longStr = "9999999999";
String doubleStr = "2.71828";

Integer i = Integer.valueOf(intStr);      // 建議:使用 valueOf 享受快取
Float f = Float.valueOf(floatStr);
Long l = Long.valueOf(longStr);
Double d = Double.valueOf(doubleStr);

3.2 解析為基本型別(自動拆箱)


int primitiveInt = Integer.parseInt(intStr);     // 直接得到 int
float primitiveFloat = Float.parseFloat(floatStr);
long primitiveLong = Long.parseLong(longStr);
double primitiveDouble = Double.parseDouble(doubleStr);

⚠️ 原文常見錯誤修正

原文錯誤寫法正確寫法說明
Float f = Integer.parseInt(floatStr)Float f = Float.valueOf(floatStr)Integer 無法解析浮點數字串
Long lo = long.parseInt(longStr)Long lo = Long.valueOf(longStr)長整數用 Long.parseLong / Long.valueOf
Double d = double.parseInt(doublestring)Double d = Double.valueOf(doubleStr)Double 型別用 Double.parseDouble / Double.valueOf
Byte b = Integer.intValue(s)Byte b = Byte.valueOf(s)Byte/Short 有專屬 valueOf/parseXxx
Boolean flag = Boolean.valueOf("s")Boolean flag = Boolean.valueOf(s)傳入變數 s 而非字面值 "s"

四、String ↔ byte / short

String s = "100";
byte b = Byte.parseByte(s);      // 或 Byte.valueOf(s)
short sh = Short.parseShort(s);  // 或 Short.valueOf(s)

五、String ↔ char

// char → String
char c = '漢';
String str = String.valueOf(c);  // "漢"

// String → char (取單一字元)
String text = "漢字";
char first = text.charAt(0);     // '漢'
char second = text.charAt(1);    // '字'

六、String ↔ boolean

// String → boolean (不區分大小寫)
String trueStr = "true";
String falseStr = "false";
String yesStr = "YES";

boolean b1 = Boolean.parseBoolean(trueStr);   // true
boolean b2 = Boolean.parseBoolean(falseStr);  // false
boolean b3 = Boolean.parseBoolean(yesStr);    // false (非 "true" 皆為 false)

Boolean obj = Boolean.valueOf(trueStr);       // 包裝類別 Boolean.TRUE

注意:Boolean.parseBoolean() 僅 "true" (忽略大小寫) 回傳 true,其餘皆為 false,不支援 "yes"/"1"/"on" 等語意。

七、實務最佳實踐總結表

轉換方向推薦 API備註
基本型別 → StringString.valueOf(xxx)通用、無 NPE 風險
String → 包裝類別Xxx.valueOf(str)享受快取、可回傳 null
String → 基本型別Xxx.parseXxx(str)直接得到 primitive、效能略優
包裝類別 → 基本型別自動拆箱Java 5+ 自動處理,注意 NPE
基本型別 → 包裝類別自動裝箱Java 5+ 自動處理,享受快取

八、效能與記憶體小撇步

  • 頻繁轉換時,優先使用基本型別避免物件建立開銷
  • 整數範圍 -128 ~ 127、字元 0~127、布林值會被 valueOf 快取,重複使用不創建新物件
  • 大量數值解析場景(如 CSV 匯入),考慮使用專用解析庫或手寫解析器提升吞吐量

九、結語

掌握 Java 型別轉換的標準 API 與慣用模式,能寫出更簡潔、安全、高效的程式碼。建議收藏本手冊作為開發時的快速參考,並在 Code Review 時留意原文中常見的 Integer.parseInt 誤用浮點數字串、long.parseInt 等不存在方法等低級錯誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved