- 好好學(xué)Java:從零基礎(chǔ)到項目實戰(zhàn)
- 歐陽燊
- 1107字
- 2022-07-27 19:15:04
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);
- JavaScript修煉之道
- Building a RESTful Web Service with Spring
- 鋒利的SQL(第2版)
- 大模型RAG實戰(zhàn):RAG原理、應(yīng)用與系統(tǒng)構(gòu)建
- OpenStack Orchestration
- Asynchronous Android Programming(Second Edition)
- Java面向?qū)ο蟪绦蛟O(shè)計
- OpenCV 3 Blueprints
- 超簡單:用Python讓Excel飛起來(實戰(zhàn)150例)
- Software Development on the SAP HANA Platform
- 從零開始學(xué)UI:概念解析、實戰(zhàn)提高、突破規(guī)則
- 和孩子一起學(xué)編程:用Scratch玩Minecraft我的世界
- Java編程指南:語法基礎(chǔ)、面向?qū)ο蟆⒑瘮?shù)式編程與項目實戰(zhàn)
- Python滲透測試編程技術(shù):方法與實踐(第2版)
- Switching to Angular 2