1. 程式人生 > >Java開發筆記(三十四)字串的賦值及型別轉換

Java開發筆記(三十四)字串的賦值及型別轉換

不管是基本的char字元型,還是包裝字元型別Character,它們的每個變數只能存放一個字元,無法滿足對一串字元的加工。為了能夠直接操作一連串的字元,Java設計了專門的字串型別String,該型別允許儲存一整串字元,並對字串進行各種處理。
字串型別不屬於基本型別,它的用法與包裝型別更為接近。例如給字串變數賦初始值,就有多達四種的賦值形式(包裝型別只有三種賦值),分別介紹如下:
1、被雙引號包裹著的字串,可直接用等號賦值給字串變數,程式碼示例如下:

		// 第一種方式:用雙引號把字串括起來
		String fromQuote = "Hello";
		System.out.println("fromQuote="+fromQuote);

 

2、呼叫String型別的valueOf方法把整型、浮點型、布林型、字元型、字元陣列等變數轉換為字串,方法呼叫的程式碼例子如下:

		// 第二種方式:使用String的valueOf方法把整型、浮點型、布林型、字元型、字元陣列等變數轉換為字串
		String fromValueOf = String.valueOf(111);
		System.out.println("fromValueOf="+fromValueOf);

 

3、對於字元陣列來說,還能通過new關鍵字建立字串變數,此時賦值程式碼如下所示:

		// 第三種方式:對於字元陣列來說,還能通過new關鍵字建立字串變數
		char[] array = {'A', 'B', 'C'};
		String fromArray = new String(array);
		System.out.println("fromArray="+fromArray);

 

4、對於基本變數型別(陣列除外)來說,也可以利用加號連線基本變數和空串,下面的程式碼便是一個例子:

		// 第四種方式:對於基本變數型別(陣列除外)來說,也可以利用加號連線基本變數和空串
		// 注意,數值變數之間的加號為算術上的相加運算,而字串之間的加號為兩個字串的合併操作
		String fromPlus = true+"";
		System.out.println("fromPlus="+fromPlus);

 

以上給字串變數的賦值方式不多不少正好四種,恰似茴香豆的茴有四種寫法那樣,既然知曉了字串的四種賦值,不妨溫習一下魯迅筆下“茴”的四種寫法,看看你還記得幾個?茴字上邊為草頭,下邊為回家的回,其實有四種寫法的是“回”字,包括:回、囘、囬,還有一種是“口”字然後裡面有個“目”字。回頭再複習剛才提到的字串的四種賦值方式,如果讀者還記得具體是哪四種,那麼恭喜你已經掌握了字串的入門訣竅。

現在能夠把各種基本型別的變數賦值給字串變數,那麼公平起見,也要求字串變數允許轉換成其它型別的變數。不過字串型別不支援直接轉為基本型別,必須先轉成包裝型別,再從包裝型別轉成基本型別。像包裝整型Integer提供了parseInt方法,可將輸入的字串變數轉換成包裝整型變數並返回。類似的字串轉換方法還有:包裝長整型Long的parseLong方法,包裝浮點型Float的parseFloat方法,包裝雙精度型Double的parseDouble方法,包裝布林型Boolean的parseBoolean方法。可是包裝字元型並沒有相應的parse***方法,這是怎麼回事呢?仔細想想字串內部由一串連續的字元組成,然而一個字元型變數只能容納一個字元,由於一串字元無法轉成一個字元,必須拆開變為多個字元,因此字串型別不能轉成字元型,只允許轉換成字元陣列。要想把字串變數轉為字元陣列,則需呼叫字串變數的toCharArray方法,該方法的輸出引數即為字元陣列型別char[]。
下面的方法呼叫程式碼演示瞭如何將字串型別轉換成包裝型別,以及字元陣列型別的變數:

		String number = "13456";
		// 將字串變數轉換成包裝整型變數
		Integer packInt = Integer.parseInt(number);
		System.out.println("packInt="+packInt);
		// 將字串變數轉換成包裝長整型變數
		Long packLong = Long.parseLong(number);
		System.out.println("packLong="+packLong);
		// 將字串變數轉換成包裝浮點型變數
		Float packFloat = Float.parseFloat(number);
		System.out.println("packFloat="+packFloat);
		// 將字串變數轉換成包裝雙精度型變數
		Double packDouble = Double.parseDouble(number);
		System.out.println("packDouble="+packDouble);
		String zhen = "true";
		// 將字串變數轉換成包裝布林型變數
		Boolean packBoolean = Boolean.parseBoolean(zhen);
		System.out.println("packBoolean="+packBoolean);
		// 將字串轉換成字元陣列
		char[] numberArray = number.toCharArray();
		for (char item : numberArray) {
			System.out.println("item="+item);
		}

 

前面介紹大數字型別的時候,提到可以通過valueOf方法給大數字變數賦值,但是該方法的輸入引數要求為基本數字型別,因為基本型別可表達的數值範圍存在限制,比如長整型long表示的數字大小為19位整數,雙精度型double表示的有效數字大小隻有15到16位,所以一旦某個巨大的整數或者長尾巴的小數超出有效位數,這個數字就無法通過valueOf方法賦值給大數字型別了。為了解決超大數字的賦值問題,BigInteger和BigDecimal提供了第二種賦值方式:先利用字串變數儲存超大數字,再使用關鍵字new建立該字串對應的大數字變數,具體的超大數字賦值程式碼示例如下:

		String bigNumber = "134567890134567890134567890";
		// 將字串變數轉換成大整數變數
		BigInteger bigInt = new BigInteger(bigNumber);
		System.out.println("bigInt="+bigInt);
		// 將字串變數轉換成大小數變數
		BigDecimal bigDec = new BigDecimal(bigNumber);
		System.out.println("bigDec="+bigDec);

 

既然字串變數能夠轉換成包裝型別和大數字型別,反過來,包裝變數和大數字變數也能轉換成字串型別,並且轉為字串的方式很簡單,只要由包裝變數和大數字變數呼叫自身的toString方法即可。



更多Java技術文章參見《Java開發筆記(序)章節目錄