這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)在JAVA中如何對字符進(jìn)行轉(zhuǎn)義,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)建站憑借在網(wǎng)站建設(shè)、網(wǎng)站推廣領(lǐng)域領(lǐng)先的技術(shù)能力和多年的行業(yè)經(jīng)驗(yàn),為客戶提供超值的營銷型網(wǎng)站建設(shè)服務(wù),我們始終認(rèn)為:好的營銷型網(wǎng)站就是好的業(yè)務(wù)員。我們已成功為企業(yè)單位、個人等客戶提供了做網(wǎng)站、成都網(wǎng)站制作服務(wù),以良好的商業(yè)信譽(yù),完善的服務(wù)及深厚的技術(shù)力量處于同行領(lǐng)先地位。
具體如下:
1.八進(jìn)制轉(zhuǎn)義序列:\ + 1到3位5數(shù)字;范圍'\000'~'\377'
\0:空字符
2.Unicode轉(zhuǎn)義字符:\u + 四個十六進(jìn)制數(shù)字;0~65535
\u0000:空字符
3.特殊字符:就3個
\":雙引號
\':單引號
\\:反斜線
4.控制字符:5個
\' 單引號字符
\\ 反斜杠字符
\r 回車
\n 換行
\f 走紙換頁
\t 橫向跳格
\b 退格
點(diǎn)的轉(zhuǎn)義:. ==> u002E
美元符號的轉(zhuǎn)義:$ ==> u0024
乘方符號的轉(zhuǎn)義:^ ==> u005E
左大括號的轉(zhuǎn)義:{ ==> u007B
左方括號的轉(zhuǎn)義:[ ==> u005B
左圓括號的轉(zhuǎn)義:( ==> u0028
豎線的轉(zhuǎn)義:| ==> u007C
右圓括號的轉(zhuǎn)義:) ==> u0029
星號的轉(zhuǎn)義:* ==> u002A
加號的轉(zhuǎn)義:+ ==> u002B
問號的轉(zhuǎn)義:? ==> u003F
反斜杠的轉(zhuǎn)義: ==> u005C
下面的程序使用了兩個Unicode的轉(zhuǎn)義字符,它們是用其十六進(jìn)制代碼來表示Unicode字符。那么,這個程序會打印什么呢?
public class EscapeRout{ public static void main(String[] args){ // \u0022 是雙引號的Unicode轉(zhuǎn)義字符 System.out.println("a\u0022.length() +\u0022b".length()); } } public class EscapeRout{ public static void main(String[] args){ // \u0022 是雙引號的Unicode轉(zhuǎn)義字符 System.out.println("a\u0022.length() +\u0022b".length()); } }
對該程序的一種很膚淺的分析會認(rèn)為它應(yīng)該打印出26,因?yàn)樵谟蓛蓚€雙引號"a\u0022.length()+\u0022b"標(biāo)識的字符串之間總共有26個字符。
稍微深入一點(diǎn)的分析會認(rèn)為該程序應(yīng)該打印16,因?yàn)閮蓚€Unicode轉(zhuǎn)義字符每一個在源文件中都需要用6個字符來表示,但是它們只表示字符串中 的一個字符。因此這個字符串應(yīng)該比它的外表看其來要短10個字符。 如果你運(yùn)行這個程序,就會發(fā)現(xiàn)事情遠(yuǎn)不是這么回事。它打印的既不是26也不是16,而是2。
理解這個謎題的關(guān)鍵是要知道:Java對在字符串字面常量中的Unicode轉(zhuǎn)義字符沒有提供任何特殊處理。編譯器在將程序解析成各種符號之前, 先將Unicode轉(zhuǎn)義字符轉(zhuǎn)換成為它們所表示的字符[JLS 3.2]。因此,程序中的第一個Unicode轉(zhuǎn)義字符將作為一個單字符字符串字面常量("a")的結(jié)束引號,而第二個Unicode轉(zhuǎn)義字符將作為另一 個單字符字符串字面常量("b")的開始引號。程序打印的是表達(dá)式"a".length()+"b".length(),即2。
如果該程序的作者確實(shí)希望得到這種行為,那么下面的語句將要清楚得多:
System.out.println("a".length()+"b".length());
更有可能的情況是該作者希望將兩個雙引號字符置于字符串字面常量的內(nèi)部。使用Unicode轉(zhuǎn)義字符你是不能實(shí)現(xiàn)這一點(diǎn)的,但是你可以使用轉(zhuǎn)義字 符序列來實(shí)現(xiàn)[JLS 3.10.6]。表示一個雙引號的轉(zhuǎn)義字符序列是一個反斜杠后面緊跟著一個雙引號(\”)。如果將最初的程序中的Unicode轉(zhuǎn)義字符用轉(zhuǎn)義字符序列來 替換,那么它將打印出所期望的16(錯誤,應(yīng)該是14,不知道是怎么會出來16):
System.out.println("a\".length()+\"b".length());
許多字符都有相應(yīng)的轉(zhuǎn)義字符序列,包括單引號(\')、換行(\n)、制表符(\t)和反斜線(\\)。你可以在字符字面常量和字符串字面常量中使用轉(zhuǎn)義字符序列。
實(shí)際上,你可以通過使用被稱為八進(jìn)制轉(zhuǎn)義字符的特殊類型的轉(zhuǎn)義字符序列,將任何ASCII字符置于一個字符串字面常量或一個字符字面常量中,但是最好是盡可能地使用普通的轉(zhuǎn)義字符序列。
普通的轉(zhuǎn)義字符序列和八進(jìn)制轉(zhuǎn)義字符都比Unicode轉(zhuǎn)義字符要好得多,因?yàn)榕cUnicode轉(zhuǎn)義字符不同,轉(zhuǎn)義字符序列是在程序被解析為各種符號之后被處理的。
ASCII是字符集的最小公共特性集,它只有128個字符,但是Unicode有超過65,000個字符。一個Unicode轉(zhuǎn)義字符可以被用來在只使用ASCII字符的程序中插入一個Unicode字符。一個Unicode轉(zhuǎn)義字符精確地等價(jià)于它所表示的字符。
Unicode轉(zhuǎn)義字符被設(shè)計(jì)為用于在程序員需要插入一個不能用源文件字符集表示的字符的情況。它們主要用于將非ASCII字符置于標(biāo)識符、字符 串字面常量、字符字面常量以及注釋中。偶爾地,Unicode轉(zhuǎn)義字符也被用來在看起來頗為相似的數(shù)個字符中明確地標(biāo)識其中的某一個,從而增加程序的清晰 度。
總之,在字符串和字符字面常量中要優(yōu)先選擇的是轉(zhuǎn)義字符序列,而不是Unicode轉(zhuǎn)義字符。Unicode轉(zhuǎn)義字符可能會因?yàn)樗鼈冊诰幾g序列中 被處理得過早而引起混亂。不要使用Unicode轉(zhuǎn)義字符來表示ASCII字符。在字符串和字符字面常量中,應(yīng)該使用轉(zhuǎn)義字符序列;對于除這些字面常量之 外的情況,應(yīng)該直接將ASCII字符插入到源文件中。
java轉(zhuǎn)義字符對照表
點(diǎn)的轉(zhuǎn)義:. ==> u002E
美元符號的轉(zhuǎn)義:$ ==> u0024
乘方符號的轉(zhuǎn)義:^ ==> u005E
左大括號的轉(zhuǎn)義:{ ==> u007B
左方括號的轉(zhuǎn)義:[ ==> u005B
左圓括號的轉(zhuǎn)義:( ==> u0028
豎線的轉(zhuǎn)義:| ==> u007C
右圓括號的轉(zhuǎn)義:) ==> u0029
星號的轉(zhuǎn)義:* ==> u002A
加號的轉(zhuǎn)義:+ ==> u002B
問號的轉(zhuǎn)義:? ==> u003F
反斜杠的轉(zhuǎn)義: ==> u005C
String str2="a$b$c"; String strs[]=str2.split("$"); for(String str:strs){ System.out.println(str); }
并不會打出 a , b ,c需要轉(zhuǎn)義才可如:
String str2="a$b$c"; String strs[]=str2.split("\\u0024"); for(String str:strs){ System.out.println(str); }
上述就是小編為大家分享的在JAVA中如何對字符進(jìn)行轉(zhuǎn)義了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
本文名稱:在JAVA中如何對字符進(jìn)行轉(zhuǎn)義
網(wǎng)頁鏈接:http://jinyejixie.com/article42/ijdhhc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、虛擬主機(jī)、品牌網(wǎng)站制作、微信公眾號、網(wǎng)站制作、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)