官术网_书友最值得收藏!

5.1.3 字符包裝類型

正如整型int有對應(yīng)的包裝整型Integer那樣,字符型char也有對應(yīng)的包裝字符型Character。初始化字符包裝變量也有3種方式,分別是:直接用等號賦值、調(diào)用包裝類型的valueOf方法、使用關(guān)鍵字new創(chuàng)建新變量。倘若要把字符包裝變量轉(zhuǎn)換成字符變量,則調(diào)用包裝變量的charValue方法即可。甚至可以對字符包裝變量做加減乘除運算,就像之前對待字符變量一般。字符包裝類型的基本使用代碼示例如下(完整代碼見本章源碼的src\com\string\character\PackChar.java):

        Character character='A';  // 聲明一個包裝字符變量
        System.out.println("character=" + character);
        char value=character.charValue();  // 把包裝字符變量轉(zhuǎn)換成基本字符變量
        System.out.println("value="+value);
        // Character類型與char類型的變量之間允許直接賦值,靠的是“自動裝箱”和“自動拆箱”
        Character plusResult=(char) (character+1);
        System.out.println("plusResult="+plusResult);

注意到上述代碼里面,包裝字符變量character直接加1,相加之和強(qiáng)制轉(zhuǎn)換成char類型后又直接賦給另一個包裝變量plusResult。這里不免令人疑惑,整型和浮點型同屬于基本類型,它們的變量相互賦值尚且需要顯式地強(qiáng)制類型轉(zhuǎn)換,如今有Character和char,一個是包裝類型,另一個是基本類型,為何它們的變量相互賦值不需要強(qiáng)制轉(zhuǎn)換類型呢?

這是因為包裝類型僅僅對基本類型加了一層封裝而已,內(nèi)部的數(shù)據(jù)格式并沒有發(fā)生變化,所以為了盡量減少代碼的改動,在包裝變量和基本變量之間賦值的時候,編譯器會自動進(jìn)行裝箱和拆箱操作。所謂裝箱,指的是編譯器會默認(rèn)調(diào)用valueOf方法,將基本類型的變量轉(zhuǎn)換成對應(yīng)包裝類型的變量;至于拆箱,指的是編譯器會默認(rèn)調(diào)用***Value方法,將包裝類型的變量轉(zhuǎn)換成對應(yīng)基本類型的變量。通過自動裝箱和自動拆箱,Java代碼實現(xiàn)了包裝變量與基本變量的無縫銜接,從而簡化了相關(guān)處理代碼。

除了上面介紹的基本方法外,Character類型針對文本加工操作額外提供了一些字符處理方法,主要說明如下。

  • isDigit:判斷輸入的字符是否為數(shù)字。
  • isLetter:判斷輸入的字符是否為字母。
  • isLowerCase:判斷輸入的字符是否為小寫字母。
  • isUpperCase:判斷輸入的字符是否為大寫字母。
  • isSpaceChar:判斷輸入的字符是否為空格。
  • isWhitespace:判斷輸入的字符是否為空白(非數(shù)字、非字母、非標(biāo)點)。
  • toLowerCase:輸入一個字符,如果原字符是大寫字母,就返回對應(yīng)的小寫字母;否則原樣返回該字符。
  • toUpperCase:輸入一個字符,如果原字符是小寫字母,就返回對應(yīng)的大寫字母;否則原樣返回該字符。

以上的字符處理方法均需按照“Character.方法名稱(輸入字符)”的形式調(diào)用,具體的方法調(diào)用代碼示例如下:

        Character letter='A';  // 聲明一個包裝字符變量
        // 下面是Character常用的字符處理方法
        boolean isDigit=Character.isDigit(letter);  // isDigit方法判斷字符是否為數(shù)字
        System.out.println("isDigit=" + isDigit);
        boolean isLetter=Character.isLetter(letter);  // isLetter方法判斷字符是否為字母
        System.out.println("isLetter=" + isLetter);
        boolean isLowerCase=Character.isLowerCase(letter);  // isLowerCase方法判斷字符是否為小寫
        System.out.println("isLowerCase=" + isLowerCase);
        boolean isUpperCase=Character.isUpperCase(letter);  // isUpperCase方法判斷字符是否為大寫
        System.out.println("isUpperCase=" + isUpperCase);
        Character line='\n';  // 聲明一個包裝字符變量
        boolean isSpaceChar=Character.isSpaceChar(line);  // isSpaceChar方法判斷字符是否為空格
        System.out.println("isSpaceChar=" + isSpaceChar);
        // isWhitespace方法判斷字符是否為空白(非數(shù)字、非字母、非標(biāo)點,包括空格、制表、回車、換行等)
        boolean isWhitespace=Character.isWhitespace(line);
        System.out.println("isWhitespace=" + isWhitespace);
        char lowerCase=Character.toLowerCase(letter);  // toLowerCase方法把字符轉(zhuǎn)換為大寫
        System.out.println("lowerCase=" + lowerCase);
        char upperCase=Character.toUpperCase(letter);  // toUpperCase方法把字符轉(zhuǎn)換為小寫
        System.out.println("upperCase=" + upperCase);
主站蜘蛛池模板: 松潘县| 南皮县| 邯郸市| 乌鲁木齐县| 华坪县| 海阳市| 汤阴县| 内乡县| 濮阳市| 赤水市| 蓝山县| 汕尾市| 义乌市| 张掖市| 雅安市| 松江区| 措美县| 临高县| 汝阳县| 乐东| 青神县| 临武县| 龙岩市| 平利县| 盐源县| 郎溪县| 高雄县| 清丰县| 巫溪县| 卓资县| 顺义区| 景德镇市| 革吉县| 淮安市| 青川县| 禄丰县| 丹寨县| 肇源县| 吴川市| 邢台市| 土默特左旗|