Java String valueOf()
String.valueOf() 方法用來將其他資料型別轉換成字串。
語法
String.valueOf(boolean b)
String.valueOf(char c)
String.valueOf(char[] data)
String.valueOf(int i)
String.valueOf(long l)
String.valueOf(float f)
String.valueOf(double d)
String.valueOf(Object obj)
範例
// 數字轉字串
String s1 = String.valueOf(100); // "100"
String s2 = String.valueOf(3.14); // "3.14"
String s3 = String.valueOf(100L); // "100"
// 布林值轉字串
String s4 = String.valueOf(true); // "true"
String s5 = String.valueOf(false); // "false"
// 字元轉字串
String s6 = String.valueOf('A'); // "A"
// 字元陣列轉字串
char[] chars = {'J', 'a', 'v', 'a'};
String s7 = String.valueOf(chars); // "Java"
// null 轉字串
Object obj = null;
String s8 = String.valueOf(obj); // "null"
其他轉換方式
整數轉字串
int n = 100;
String s1 = String.valueOf(n); // "100"
String s2 = Integer.toString(n); // "100"
String s3 = n + ""; // "100"(字串連接)
// 進位轉換
String hex = Integer.toHexString(255); // "ff"
String bin = Integer.toBinaryString(10); // "1010"
String oct = Integer.toOctalString(8); // "10"
浮點數轉字串
double d = 3.14159;
String s1 = String.valueOf(d); // "3.14159"
String s2 = Double.toString(d); // "3.14159"
// 控制小數位數
String s3 = String.format("%.2f", d); // "3.14"
valueOf vs toString
Integer num = 100;
// 兩種方式結果相同
String s1 = String.valueOf(num); // "100"
String s2 = num.toString(); // "100"
// 但 valueOf 可以處理 null
Integer nullNum = null;
String s3 = String.valueOf(nullNum); // "null"
// String s4 = nullNum.toString(); // NullPointerException!
實際應用
數字轉字串做處理
int num = 12345;
String s = String.valueOf(num);
// 取得數字長度
int length = s.length(); // 5
// 取得每個數字
for (char c : s.toCharArray()) {
System.out.println(c);
}
// 反轉數字
String reversed = new StringBuilder(s).reverse().toString();
int reversedNum = Integer.parseInt(reversed); // 54321
檢查數字特性
int num = 12321;
String s = String.valueOf(num);
// 檢查是否為回文數
String reversed = new StringBuilder(s).reverse().toString();
boolean isPalindrome = s.equals(reversed); // true
格式化數字
int num = 42;
String s = String.valueOf(num);
// 補零到指定長度
String padded = String.format("%05d", num); // "00042"
// 或使用 String 方法
String padded2 = "00000".substring(s.length()) + s; // "00042"
getBytes()
將字串轉換為位元組陣列:
String s = "Hello";
// 預設編碼
byte[] bytes1 = s.getBytes();
// 指定編碼
byte[] bytes2 = s.getBytes(StandardCharsets.UTF_8);
// 中文字串
String chinese = "你好";
byte[] bytes3 = chinese.getBytes(StandardCharsets.UTF_8);
System.out.println(bytes3.length); // 6(UTF-8 每個中文字 3 bytes)
// 位元組陣列轉回字串
String back = new String(bytes3, StandardCharsets.UTF_8);
System.out.println(back); // "你好"
copyValueOf()
從字元陣列建立字串:
char[] chars = {'H', 'e', 'l', 'l', 'o'};
// 完整複製
String s1 = String.copyValueOf(chars); // "Hello"
// 指定範圍(從索引 1 開始,複製 3 個字元)
String s2 = String.copyValueOf(chars, 1, 3); // "ell"
// 等同於 valueOf
String s3 = String.valueOf(chars); // "Hello"