一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解JAVA中轉義字符

詳解JAVA中轉義字符

2020-12-16 13:16賊船叔叔 Java教程

本篇文章主要介紹了詳解JAVA中轉義字符,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本文主要介紹JAVA轉義字符,分享給大家。具體如下:

1.八進制轉義序列:\ + 1到3位5數字;范圍'\000'~'\377' 

\0:空字符

2.Unicode轉義字符:\u + 四個十六進制數字;0~65535 

\u0000:空字符

3.特殊字符:就3個 

\":雙引號 
\':單引號 
\\:反斜線

4.控制字符:5個

\' 單引號字符

\\ 反斜杠字符

\r 回車

\n 換行

\f 走紙換頁

\t 橫向跳格

\b 退格

點的轉義:. ==> u002E

美元符號的轉義:$ ==> u0024

乘方符號的轉義:^ ==> u005E

左大括號的轉義:{ ==> u007B

左方括號的轉義:[ ==> u005B

左圓括號的轉義:( ==> u0028

豎線的轉義:| ==> u007C

右圓括號的轉義:) ==> u0029

星號的轉義:* ==> u002A

加號的轉義:+ ==> u002B

問號的轉義:? ==> u003F

反斜杠的轉義: ==> u005C

下面的程序使用了兩個Unicode的轉義字符,它們是用其十六進制代碼來表示Unicode字符。那么,這個程序會打印什么呢?

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class EscapeRout{ 
  public static void main(String[] args){ 
    // \u0022 是雙引號的Unicode轉義字符 
    System.out.println("a\u0022.length() 
+\u0022b".length()); 
  
}
 
public class EscapeRout{
  public static void main(String[] args){
    // \u0022 是雙引號的Unicode轉義字符
    System.out.println("a\u0022.length()
+\u0022b".length());
  }
}

對該程序的一種很膚淺的分析會認為它應該打印出26,因為在由兩個雙引號"a\u0022.length()+\u0022b"標識的字符串之間總共有26個字符。

稍微深入一點的分析會認為該程序應該打印16,因為兩個Unicode轉義字符每一個在源文件中都需要用6個字符來表示,但是它們只表示字符串中 的一個字符。因此這個字符串應該比它的外表看其來要短10個字符。 如果你運行這個程序,就會發現事情遠不是這么回事。它打印的既不是26也不是16,而是2。

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

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

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

更有可能的情況是該作者希望將兩個雙引號字符置于字符串字面常量的內部。使用Unicode轉義字符你是不能實現這一點的,但是你可以使用轉義字 符序列來實現[JLS 3.10.6]。表示一個雙引號的轉義字符序列是一個反斜杠后面緊跟著一個雙引號(\”)。如果將最初的程序中的Unicode轉義字符用轉義字符序列來 替換,那么它將打印出所期望的16(錯誤,應該是14,不知道是怎么會出來16):

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

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

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

普通的轉義字符序列和八進制轉義字符都比Unicode轉義字符要好得多,因為與Unicode轉義字符不同,轉義字符序列是在程序被解析為各種符號之后被處理的。

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

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

總之,在字符串和字符字面常量中要優先選擇的是轉義字符序列,而不是Unicode轉義字符。Unicode轉義字符可能會因為它們在編譯序列中 被處理得過早而引起混亂。不要使用Unicode轉義字符來表示ASCII字符。在字符串和字符字面常量中,應該使用轉義字符序列;對于除這些字面常量之 外的情況,應該直接將ASCII字符插入到源文件中。

java轉義字符對照表

點的轉義:. ==> u002E

美元符號的轉義:$ ==> u0024

乘方符號的轉義:^ ==> u005E

左大括號的轉義:{ ==> u007B

左方括號的轉義:[ ==> u005B

左圓括號的轉義:( ==> u0028

豎線的轉義:| ==> u007C

右圓括號的轉義:) ==> u0029

星號的轉義:* ==> u002A

加號的轉義:+ ==> u002B

問號的轉義:? ==> u003F

反斜杠的轉義: ==> u005C

?
1
2
3
4
5
String str2="a$b$c";
String strs[]=str2.split("$");
for(String str:strs){
   System.out.println(str);
}

 

復制代碼 代碼如下:

String str2="a$b$c";   String strs[]=str2.split("$");   for(String str:strs){    System.out.println(str);   } 

 

并不會打出 a , b ,c需要轉義才可如:

?
1
2
3
4
5
String str2="a$b$c";
String strs[]=str2.split("\\u0024");
for(String str:strs){
   System.out.println(str);
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://blog.csdn.net/generalyy0/article/details/7307267

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 翁熄性放纵交换300章 | 亚洲欧美自偷自拍另类小说 | 亚洲午夜天堂 | 国产成人h视频在线播放网站 | 四虎永久免费地址 | 秋霞鲁丝影院久久人人综合 | 婷婷伊人综合亚洲综合网 | 特黄视频免费看 | 男人天堂中文字幕 | 国产成人yy精品1024在线 | 女同全黄h全肉动漫 | 九九精品国产亚洲A片无码 九九99热久久999精品 | 青草视频在线观看免费网站 | 火影忍者羞羞 | 暖暖视频免费观看视频中国.韩剧 | 亚洲成a人不卡在线观看 | 99re在线精品视频免费 | 国产永久一区二区三区 | 波多野结衣女老师 | 99热久久这里只有精品6国产网 | 欧美一级级a在线观看 | 超h 超重口 高h 污肉1v1 | 色综合久久九月婷婷色综合 | 久久这里都是精品 | 欧美va免费大片 | 睡男神的这件小事小说在线阅读 | 成人福利网 | 91色视| 狠狠色婷婷狠狠狠亚洲综合 | 日本在线视频网 | 大香焦在线观看 | 香蕉人人超人人超碰超国产 | 糖心在线观看网 | 亚洲精品国产AV成人毛片 | 色批网站www | 百合互慰吃奶互揉漫画 | 久久永久免费视频 | 精品无人区麻豆乱码无限制 | 久久99亚洲AV无码四区碰碰 | 青青草人人 | 国产女主播在线播放一区二区 |