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);

2010年4月19日 星期一

編譯程式的過程

把原始程式碼編譯(Compile)一個可執行檔(executable),需經過以下步驟:

預處理(Preprocessing)->編譯(Compilation)->組譯(assembly)->以及連結(linking),這幾個步驟才能完成編譯的動作。

2009年1月22日 星期四

C/C++ 雙重指標(指向指標的指標變數)

雙重指標的意思就這個雙重指標變數指向的是指標的位址,而不是指向一般變數的指標位置,也就是『指向指標的指標變數』。
宣告一個雙重指標變數:

int **prt;
char **prt;
double **ptr;

指向一個指標變數:
int **doublePtr;
int *ptr;
int b = 10;

ptr =&b;
doubluePtr = &ptr;

上述doublePtr指標變數的內容存放ptr的位址,而prt指標變數內容則存放變數b的記憶體位址如下說明:

dobulePtr --> 變數內容存放ptr記憶體位址
*dobulePtr--> ptr --> 取出ptr所指向變數b記憶體位址
**dobulePtr --> *ptr --> 取出所指向變數b之變數值
&dobulePtr--> 取出doublePtr本身的記憶體位址

宣告三重指標,指向雙重指標變數的位址:

int ***wwwPtr;
wwwPtr = &doublePtr;

操作方式如下:

wwwPtr --> 變數內容存放doublePtr變數記憶體位址
*wwwPtr --> dobulePtr --> 取出doublePtr所指向ptr變數記憶體位址
**wwwPtr --> *doublePtr --> ptr --> 取出ptr所指向變數b記憶體位址
***wwwPtr --> **doublePtr --> *ptr --> 取出ptr所指向變數b之變數值
&wwwPtr --> 取出wwwPtr本身變數之記憶體位址

2008年12月5日 星期五

C/C++ printf 無號16位數

16位數的數值要如何利用printf列印:

printf("%lld\n", var);

2008年12月2日 星期二

核心目錄下的目錄架構說明

arch :與硬體平台有關的項目,例如 CPU 的等級等等;
crypto :核心所支援的加密的技術,例如 md5 或者是 des 等等;
drivers :一些硬體的驅動程式,例如顯示卡、網路卡、PCI 相關硬體等等;
fs :核心所支援的 filesystems ,例如 vfat, reiserfs, nfs 等等;
lib :一些函式庫;
net :與網路有關的各項協定資料,還有防火牆模組 (net/ipv4/netfilter/*) 等等;
sound :與音效有關的各項模組;

轉錄自鳥哥的Linux私房菜

增加man page的查詢路徑

vi /etc/manpath.config

找尋檔案中MANDATORY_MANPATH的地方
增加一行

MANDATORY_MANPATH 你要增加的路徑(例如/usr/local/man)

以上以Debian為例子