Java開發筆記(三十三)字元包裝型別
正如整型int有對應的包裝整型Integer那樣,字元型char也有對應的包裝字元型Character。初始化字元包裝變數也有三種方式,分別是:直接用等號賦值、呼叫包裝型別的valueOf方法、使用關鍵字new建立新變數。倘若要把字元包裝變數轉換成字元變數,則呼叫包裝變數的charValue方法即可。甚至可以對字元包裝變數做加減乘除運算,就像之前對待字元變數一般,字元包裝型別的基本使用程式碼示例如下:
// 宣告一個包裝字元變數 Character character = 'A'; System.out.println("character="+character); // 把包裝字元變數轉換成基本字元變數 char value = character.charValue(); System.out.println("value="+value); // Character型別與char型別的變數之間允許直接賦值,靠的是“自動裝箱”和“自動拆箱” Character plusResult = (char) (character+1); System.out.println("plusResult="+plusResult);
注意到上述程式碼裡面,包裝字元變數character直接加一,相加之和強制轉成char型別後又直接賦給另一個包裝變數plusResult。這裡不免令人疑惑,整型和浮點型同屬於基本型別,它們的變數相互賦值尚且需要顯式的強制型別轉換;如今有Character和char,一個是包裝型別,另一個是基本型別,為何它們的變數相互賦值不需要強制轉換型別呢?這是因為包裝型別僅僅對基本型別加了一層封裝而已,內部的資料格式並沒有發生變化,所以為了儘量減少程式碼的改動,在包裝變數和基本變數之間賦值的時候,編譯器會自動進行裝箱和拆箱操作。所謂裝箱,指的是編譯器會預設呼叫valueOf方法,將基本型別的變數轉換成對應包裝型別的變數;至於拆箱,指的是編譯器會預設呼叫***Value方法,將包裝型別的變數轉換成對應基本型別的變數。通過自動裝箱和自動拆箱,Java程式碼實現了包裝變數與基本變數的無縫銜接,從而簡化了相關處理程式碼。
除了上面說的基本方法,Character型別針對文字加工操作,額外提供了一些字元處理方法,主要說明如下:
isDigit:判斷輸入的字元是否為數字。
isLetter:判斷輸入的字元是否為字母。
isLowerCase:判斷輸入的字元是否為小寫字母。
isUpperCase:判斷輸入的字元是否為大寫字母。
isSpaceChar:判斷輸入的字元是否為空格。
isWhitespace:判斷輸入的字元是否為空白(非數字非字母非標點)。
toLowerCase:輸入一個字元,如果原字元是大寫字母,則返回對應的小寫字母;否則原樣返回該字元。
toUpperCase:輸入一個字元,如果原字元是小寫字母,則返回對應的大寫字母;否則原樣返回該字元。
以上的字元處理方法,均需按照“Character.方法名稱(輸入字元)”的形式呼叫,具體的方法呼叫程式碼舉例如下:
Character character = 'A'; // isDigit方法判斷字元是否為數字 boolean isDigit = Character.isDigit(character); System.out.println("isDigit="+isDigit); // isLetter方法判斷字元是否為字母 boolean isLetter = Character.isLetter(character); System.out.println("isLetter="+isLetter); // isLowerCase方法判斷字元是否為小寫 boolean isLowerCase = Character.isLowerCase(character); System.out.println("isLowerCase="+isLowerCase); // isUpperCase方法判斷字元是否為大寫 boolean isUpperCase = Character.isUpperCase(character); System.out.println("isUpperCase="+isUpperCase); Character line = '\n'; // isSpaceChar方法判斷字元是否為空格 boolean isSpaceChar = Character.isSpaceChar(line); System.out.println("isSpaceChar="+isSpaceChar); // isWhitespace方法判斷字元是否為空白(非數字非字母非標點) boolean isWhitespace = Character.isWhitespace(line); System.out.println("isWhitespace="+isWhitespace); // isWhitespace方法把字元轉換為大寫 char lowerCase = Character.toLowerCase(character); System.out.println("lowerCase="+lowerCase); // isWhitespace方法把字元轉換為小寫 char upperCase = Character.toUpperCase(character); System.out.println("upperCase="+upperCase);
更多Java技術文章參見《Java開發筆記(序)章節目錄》