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字符。那么,这个程序会打印什么呢?

Java代码

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。

如果该程序的作者确实希望得到这种行为,那么下面的语句将要清楚得多:

Java代码

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

更有可能的情况是该作者希望将两个双引号字符置于字符串字面常量的内部。使用Unicode转义字符你是不能实现这一点的,但是你可以使用转义字 符序列来实现[JLS 3.10.6]。表示一个双引号的转义字符序列是一个反斜杠后面紧跟着一个双引号(\”)。如果将最初的程序中的Unicode转义字符用转义字符序列来 替换,那么它将打印出所期望的16(错误,应该是14,不知道是怎么会出来16):

Java代码

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 u转义_java转义字符相关推荐

  1. java 文本转义_java 转义字符

    java 转义字符 Xml代码 \n 回车(\u000a)   \t 水平制表符(\u0009)   \b 空格(\u0008)   \r 换行(\u000d)   \f 换页(\u000c)   \ ...

  2. java空格转义_java转义字符 - simpower的个人空间 - OSCHINA - 中文开源技术交流社区...

    1. 注意regex的写法 String   newName=name.replaceFirst("d:\\\\racke\\\\","http://192.168.0. ...

  3. java正则转义_Java 正则表达式 转义字符

    一.这篇文章写的很好,值得看看 两个重点: 1.两次转义 (1)Java 转义(具体规则待学习) Java 中的普通字符串,需要经过 Java 的转义 (2)正则转义(具体规则待学习) Java 代码 ...

  4. java mysql转义_java如何转义

    java进行转义的方法:在需要转义的字符前加上"\"即可进行转义,使得该字符具有不同于该字符单独出现时的语义:例如:"\0"表示空字符,"\t&quo ...

  5. java 中文 转义_java下载url路径包含中文需要转义的操作

    大家看这个url: http://127.0.0.1:9997/file/江苏省地震应急预案(二级).docx 应为url路径中有中文没有转义,输入流报错 The valid characters a ...

  6. java 分号 转义_java – 正则表达式和转义和未转义的分隔符

    你可以使用正则表达式 (?:\\.|[^;\\]++)* 匹配未转义分号之间的所有文本: List matchList = new ArrayList(); try { Pattern regex = ...

  7. java正则 转义_java – 正则表达式和转义和未转义的分隔符

    你可以使用正则表达式 (?:\\.|[^;\\]++)* 匹配未转义分号之间的所有文本: List matchList = new ArrayList(); try { Pattern regex = ...

  8. java 中文 转义_java html中文汉字 反转义

    Objective-C中小怪兽的逻辑 学习Objective-C的面向对象也有一段时间了,为了犒劳自己的学习成果,写个小怪兽来犒劳一下自己把.在LOL中有怪兽和英雄的角色吧,接下来就先写一个小怪兽的类 ...

  9. java转义字符 替换_java转义字符探究恢复

    今天工作的时候,遇到了个奇怪的问题,是关于字符串转义与替换的.最后终于解决了,特总结 下. 小demo, packagecom.westward;public classDemo {/*** 1.将字 ...

最新文章

  1. iOS架构-静态库.a 和.framework的区别(0)
  2. golang 字符串分割
  3. PowerShell 调用dll
  4. web.xml中web-app标签报错
  5. 为嵌入式对象(值对象)加校验
  6. Linux Kernel 多个本地信息泄露漏洞
  7. java bitset_Java BitSet nextSetBit()方法与示例
  8. javaShop JAVA版多用户B2B2C商城源码(PC +H5+小程序+APP)
  9. Echarts教程篇:概览
  10. php 时间转换时间戳_php时间戳转换日期方法总结
  11. html吃豆豆游戏代码,HTML5 Canvas 来回简单版吃豆豆
  12. Python春节特训营08:还记得大明湖畔的变量和函数吗
  13. 40种让孩子爱上阅读的好方法!转给家长
  14. AD629测量负载电流的电路原理详解——精妙绝伦的电路设计
  15. 进阶篇:3.9)3d打印件设计
  16. Python实现猫捉老鼠小游戏!虽然简陋但是童真永在!
  17. LiveNVR监控流媒体Onvif/RTSP功能支持海康摄像头通过海康SDK接入支持回看倍速播放海康设备存储的设备录像
  18. 自媒体爆文素材网站有哪些?分享3个实用网站!
  19. 1455:【例题1】Oulipo——字符串哈希
  20. could not create the java machine_解决could not create the java virtual machine问题

热门文章

  1. 【转载】“而立”,“不惑”和“知天命”--程序员的三个层次
  2. asp.net934-IT培训网站的设计与实现
  3. 移动通信核心网需引入NFV
  4. 是什么让Foursquare颇具钱景?
  5. 第八次网页前端培训笔记
  6. Electron + vue搭建项目
  7. JAVA—Markdown
  8. @Value注入不生效,@Value注入静态变量
  9. 查看docker版本命令docker version
  10. Amdroid ExpandableListView(可折叠列表)的基本使用