日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

谜题14:转义字符的溃败

發(fā)布時(shí)間:2025/5/22 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谜题14:转义字符的溃败 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

下面的程序使用了兩個(gè)Unicode的轉(zhuǎn)義字符,它們是用其十六進(jìn)制代碼來表示Unicode字符。那么,這個(gè)程序會(huì)打印什么呢?

public class EscapeRout{public static void main(String[] args){ // \u0022 是雙引號(hào)的Unicode轉(zhuǎn)義字符 System.out.println("a\u0022.length()+\u0022b".length()); } }

對(duì)該程序的一種很膚淺的分析會(huì)認(rèn)為它應(yīng)該打印出26,因?yàn)樵谟蓛蓚€(gè)雙引號(hào)"a\u0022.length()+\u0022b"標(biāo)識(shí)的字符串之間總共有26個(gè)字符。

稍微深入一點(diǎn)的分析會(huì)認(rèn)為該程序應(yīng)該打印16,因?yàn)閮蓚€(gè)Unicode轉(zhuǎn)義字符每一個(gè)在源文件中都需要用6個(gè)字符來表示,但是它們只表示字符串中的一個(gè)字符。因此這個(gè)字符串應(yīng)該比它的外表看其來要短10個(gè)字符。 如果你運(yùn)行這個(gè)程序,就會(huì)發(fā)現(xiàn)事情遠(yuǎn)不是這么回事。它打印的既不是26也不是16,而是2。

理解這個(gè)謎題的關(guān)鍵是要知道:Java對(duì)在字符串字面常量中的Unicode轉(zhuǎn)義字符沒有提供任何特殊處理。編譯器在將程序解析成各種符號(hào)之前,先將Unicode轉(zhuǎn)義字符轉(zhuǎn)換成為它們所表示的字符[JLS 3.2]。因此,程序中的第一個(gè)Unicode轉(zhuǎn)義字符將作為一個(gè)單字符字符串字面常量("a")的結(jié)束引號(hào),而第二個(gè)Unicode轉(zhuǎn)義字符將作為另一個(gè)單字符字符串字面常量("b")的開始引號(hào)。程序打印的是表達(dá)式"a".length()+"b".length(),即2。

如果該程序的作者確實(shí)希望得到這種行為,那么下面的語(yǔ)句將要清楚得多:

System.out.println("a".length()+"b".length());

更有可能的情況是該作者希望將兩個(gè)雙引號(hào)字符置于字符串字面常量的內(nèi)部。使用Unicode轉(zhuǎn)義字符你是不能實(shí)現(xiàn)這一點(diǎn)的,但是你可以使用轉(zhuǎn)義字符序列來實(shí)現(xiàn)[JLS 3.10.6]。表示一個(gè)雙引號(hào)的轉(zhuǎn)義字符序列是一個(gè)反斜杠后面緊跟著一個(gè)雙引號(hào)(\”)。如果將最初的程序中的Unicode轉(zhuǎn)義字符用轉(zhuǎn)義字符序列來替換,那么它將打印出所期望的16:

System.out.println("a\".length()+\"b".length());

許多字符都有相應(yīng)的轉(zhuǎn)義字符序列,包括單引號(hào)(\‘)、換行(\n)、制表符(\t)和反斜線(\)。你可以在字符字面常量和字符串字面常量中使用轉(zhuǎn)義字符序列。

實(shí)際上,你可以通過使用被稱為八進(jìn)制轉(zhuǎn)義字符的特殊類型的轉(zhuǎn)義字符序列,將任何ASCII字符置于一個(gè)字符串字面常量或一個(gè)字符字面常量中,但是最好是盡可能地使用普通的轉(zhuǎn)義字符序列。

普通的轉(zhuǎn)義字符序列和八進(jìn)制轉(zhuǎn)義字符都比Unicode轉(zhuǎn)義字符要好得多,因?yàn)榕cUnicode轉(zhuǎn)義字符不同,轉(zhuǎn)義字符序列是在程序被解析為各種符號(hào)之后被處理的。

ASCII是字符集的最小公共特性集,它只有128個(gè)字符,但是Unicode有超過65,000個(gè)字符。一個(gè)Unicode轉(zhuǎn)義字符可以被用來在只使用ASCII字符的程序中插入一個(gè)Unicode字符。一個(gè)Unicode轉(zhuǎn)義字符精確地等價(jià)于它所表示的字符。

Unicode轉(zhuǎn)義字符被設(shè)計(jì)為用于在程序員需要插入一個(gè)不能用源文件字符集表示的字符的情況。它們主要用于將非ASCII字符置于標(biāo)識(shí)符、字符串字面常量、字符字面常量以及注釋中。偶爾地,Unicode轉(zhuǎn)義字符也被用來在看起來頗為相似的數(shù)個(gè)字符中明確地標(biāo)識(shí)其中的某一個(gè),從而增加程序的清晰度。

總之,在字符串和字符字面常量中要優(yōu)先選擇的是轉(zhuǎn)義字符序列,而不是Unicode轉(zhuǎn)義字符。Unicode轉(zhuǎn)義字符可能會(huì)因?yàn)樗鼈冊(cè)诰幾g序列中被處理得過早而引起混亂。不要使用Unicode轉(zhuǎn)義字符來表示ASCII字符。在字符串和字符字面常量中,應(yīng)該使用轉(zhuǎn)義字符序列;對(duì)于除這些字面常量之外的情況,應(yīng)該直接將ASCII字符插入到源文件中。

轉(zhuǎn)載于:https://www.cnblogs.com/yuyu666/p/9840386.html

總結(jié)

以上是生活随笔為你收集整理的谜题14:转义字符的溃败的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久精品国产99精品国产亚洲性色 | 国产成人精品一区二区在线观看 | 欧美草逼网 | 免费黄色片视频 | 美国一区二区三区 | 天堂在线官网 | 久久久综合网 | 免费一级特黄特色大片 | 亚洲区在线播放 | 毛片3 | 好吊日av| av资源中文在线 | 欧美精品久久 | 天天爱天天做天天爽 | 爱久久 | 午夜在线播放视频 | 亚洲少妇一区二区三区 | 日日夜夜操视频 | 亚洲自拍第二页 | www.夜夜爽| 日韩激情视频在线观看 | 国产又粗又猛视频 | 男人狂揉女人下部视频 | 青娱乐福利视频 | 手机av中文字幕 | 亚洲午夜伦理 | 国产乱码一区二区三区在线观看 | 成人免费视频一区二区三区 | 黄色一级大片免费版 | 一卡二卡三卡四卡五卡 | 国产一区二区三区乱码 | 日韩一二三区视频 | 人人爽人人澡 | 免费黄色短片 | 日韩一区二区三区视频在线观看 | 久久爰 | 人妻精品久久久久中文字幕 | 秋霞一区二区三区 | 特级a级片 | 国产福利一区二区 | 激情五月综合色婷婷一区二区 | 精品少妇人妻av免费久久洗澡 | 99蜜桃臀久久久欧美精品网站 | 少妇激情一区二区三区视频 | 蜜臀av一区二区 | 成人国产毛片 | 激情视频一区二区三区 | 亚洲精品久久久久久久蜜桃 | 中国少妇做爰全过程毛片 | 日本成片网 | 日韩mv欧美mv国产网站 | 日韩久久一区二区三区 | 日本视频h | 欧美精品第1页 | 高清乱码毛片入口 | 怡红院久久 | 美女网站免费黄 | 亚洲综合影视 | 欧美另类在线播放 | 国产爽爽爽 | 美女扒开尿口让男人捅爽 | 国产精品无码内射 | 超碰一区二区三区 | 欧美精品动漫 | 色多多入口 | 亚洲蜜桃av一区二区 | 国产一级片自拍 | 日本高清有码 | 真人bbbbbbbbb毛片 | 日韩毛片儿 | 网站免费黄色 | 欧美自拍偷拍一区二区 | 国内精品福利视频 | 在线欧美视频 | 黄色一级免费看 | 国产精品成人一区二区网站软件 | 精品人妻无码一区二区 | 亚洲一区二区三区电影在线观看 | 日韩簧片| 亚洲美女中文字幕 | 好看的中文字幕电影 | 一本色道久久综合亚洲精品图片 | 麻豆国产在线播放 | 亚洲精品国产精品乱码在线观看 | 樱桃视频一区二区三区 | 青青草免费av | 久久久久久久人妻无码中文字幕爆 | 亚洲最新av网站 | 亚洲久草视频 | 理论在线视频 | 国产精品玖玖玖 | 国产操女人 | 国产黄色网址在线观看 | 日本xxxwww | 久久精品视频在线免费观看 | 伊人久久青草 | 欧美日韩一区电影 | 欧美女优在线观看 | 91香蕉视频污污 |