Java String 與基本資料型態轉換


轉載自 : http://www.javaworld.com.tw/jute/post/view?bid=29&id=9557

  1. 由 基本資料型態轉換成 String

String 類別中已經提供了將基本資料型態轉換成 String 的 static 方法 , 也就是 String.valueOf() 這個參數多載的方法

有下列幾種

String.valueOf(boolean b) : 將 boolean 變數 b 轉換成字串
String.valueOf(char c) : 將 char 變數 c 轉換成字串
String.valueOf(char[] data) : 將 char 陣列 data 轉換成字串
String.valueOf(char[] data, int offset, int count) :

將 char 陣列 data 中 由 data[offset] 開始取 count 個元素 轉換成字串

String.valueOf(double d) : 將 double 變數 d 轉換成字串
String.valueOf(float f) : 將 float 變數 f 轉換成字串
String.valueOf(int i) : 將 int 變數 i 轉換成字串
String.valueOf(long l) : 將 long 變數 l 轉換成字串
String.valueOf(Object obj) : 將 obj 物件轉換成 字串, 等於 obj.toString()

用法如:
int i = 10;
String str = String.valueOf(i);
這時候 str 就會是 “10”

  1. 由 String 轉換成 數字的基本資料型態 , 要將 String 轉換成基本資料型態轉 , 大多需要使用基本資料型態的包裝類別

比如說 String 轉換成 byte , 可以使用 Byte.parseByte(String s)
這一類的方法如果無法將 s 分析 則會丟出 NumberFormatException

byte :
Byte.parseByte(String s) : 將 s 轉換成 byte
Byte.parseByte(String s, int radix) : 以 radix 為基底 將 s 轉換為 byte
比如說 Byte.parseByte(“11”, 16) 會得到 17

double :
Double.parseDouble(String s) : 將 s 轉換成 double

float :
Double.parseFloat(String s) : 將 s 轉換成 float

int :
Integer.parseInt(String s) : 將 s 轉換成 int

long :
Long.parseLong(String s) : 將 s 轉換成 long

關於以下代碼效率低的說明 :

int a=0;
String b=a+””;

測試代碼 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/*
* output:
* normal converting (ms): 2143
* algorithm converting (ms): 701
* ---------------------------------------
* normal converting (ms): 2203
* algorithm converting (ms): 671
*/

public class Test{
public static void main(String[] args){
new Test();
}

public Test(){
System.out.println("normal converting (ms): " + normal());
System.out.println("algorithm converting (ms): " + algo());
}

public long normal(){
int a = 0;
String b = null;
long st = System.currentTimeMillis();
for (int i = 0; i < 2000000; i++){
b = a + "";
}
long et = System.currentTimeMillis();
return (et - st);
}

public long algo(){
int a = 0;
String b = null;
long st = System.currentTimeMillis();
for (int i = 0; i < 2000000; i++){
b = Integer.toString(a);
}
long et = System.currentTimeMillis();
return (et - st);
}
}