溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java中轉(zhuǎn)義字符時(shí)會出現(xiàn)哪些問題

發(fā)布時(shí)間:2020-11-10 15:30:53 來源:億速云 閱讀:230 作者:Leah 欄目:編程語言

這篇文章將為大家詳細(xì)講解有關(guān)java中轉(zhuǎn)義字符時(shí)會出現(xiàn)哪些問題,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

在java中,你可以定義

char c = '\u4f60';
char m = '\u0045';
char e = '\u554a';

這樣的字面量,例如:

System.out.println("\u535a\u5ba2\u56ed");

這樣的代碼不管在什么編碼環(huán)境下都不會出現(xiàn)中文亂碼的問題

但是你不能定義這樣的字面量:

char c = '\u000a';
char m = '\u0027';

這是因?yàn)閈u000a和\u0027是特殊轉(zhuǎn)義字符,Java對在字符串字面常量中的Unicode轉(zhuǎn)義字符沒有提供任何特殊處理。程序會直接按照原字符轉(zhuǎn)換為它們所表示的字符[JLS 3.2]。

\u000a是一個(gè)LineFeed,即換行,這樣程序會編譯成

char c = '
';

自然是編譯錯(cuò)誤了

另一個(gè)例子是:

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

對該程序的一種很膚淺的分析會認(rèn)為它應(yīng)該打印出26,稍微深入一點(diǎn)的分析會認(rèn)為該程序應(yīng)該打印16,如果你實(shí)際運(yùn)行一遍,發(fā)現(xiàn)結(jié)果既不是26也不是16,而是2.

因?yàn)椋琝u0022是雙引號的轉(zhuǎn)義字,程序最終會編譯為

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

基于此案例,我寫了一個(gè)例子,大家可以運(yùn)行嘗試一下結(jié)果

String str = "\u0061\u0022\u002b\u0028\u006e\u0065\u0077\u0020\u006a\u0061\u0076\u0061\u002e\u0075\u0074\u0069\u006c\u002e\u0063\u006f\u006e\u0063\u0075\u0072\u0072\u0065\u006e\u0074\u002e\u0043\u0061\u006c\u006c\u0061\u0062\u006c\u0065<\u0056\u006f\u0069\u0064>\u0028\u0029\u007b\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0056\u006f\u0069\u0064\u0020\u0063\u0061\u006c\u006c\u0028\u0029\u007b\u0074\u0068\u0072\u006f\u0077\u0020\u006e\u0065\u0077\u0020\u0052\u0075\u006e\u0074\u0069\u006d\u0065\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0028\u0022\u0073\u0075\u0070\u0072\u0069\u0073\u0065\u0020\u006d\u0061\u0074\u0068\u0065\u0072\u0020\u0066\u0075\u0063\u006b\u0065\u0072\u0021\u0022\u0029\u003b\u007d\u007d\u0029\u002e\u0063\u0061\u006c\u006c\u0028\u0029\u002b\u0022";
System.out.println(str);

關(guān)于java中轉(zhuǎn)義字符時(shí)會出現(xiàn)哪些問題就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI