2010年5月25日 星期二

Java - 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"

2. 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

用法如:
try
{
String str = "1234"; int a = Integer.parseInt(str);
}
catch (NumberFormatException e)
{
System.out.println(" parse int error!! " + e);
}

2010年5月6日 星期四

C/C++ 動態記憶體配置

動態記憶體配置有別於靜態記憶體配置:
◎ 靜態記憶體配置是在編譯(Compile)階段就完成記憶體空間的配置

◎ 動態記憶體配置則是等到執行階段(runtime)才向作業要求配置所需的記憶體空間,動態記憶體配置的方法,可靈活運用程式所需的記憶體空間。

C/C++標準函式庫提供了兩個函式『malloc()』與『free()』,可以像作業系統要求配置與釋放程式所需的記憶體空間。

【malloc()】:配置記憶體空間

語法:

(資料型態 *) 變數名稱 = (資料型態 *)malloc(sizeof(資料型態));

配置成功傳回指向此記憶體空間的指標,配置失敗則回傳NULL。

例如:

int *integer = (int *)malloc(sizeof(int));

// 配置結構陣列的記體空間(例如:陣列大小為10)
struct abc *s;
s = (struct abc *)malloc*(10*sizeof(struct abc));

【free()】:釋放配置的記憶體空間

free()函式可以釋放malloc()函式所配置出來的記憶體空間,例如integer指標指向malloc()所配置記憶體的位址,即可呼叫free()來釋放記憶體空間:

// 配置記憶體
int *integer = (int *)malloc(sizeof(int));

// 釋放記憶體
free(integer);