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字符插入到源文件中。

----------------------------------------------------------摘自网络

点的转义:. ==> u002E

美元符号的转义:$ ==> u0024

乘方符号的转义:^ ==> u005E

左大括号的转义:{ ==> u007B

左方括号的转义:[ ==> u005B

左圆括号的转义:( ==> u0028

竖线的转义:| ==> u007C

右圆括号的转义:) ==> u0029

星号的转义:* ==> u002A

加号的转义:+ ==> u002B

问号的转义:? ==> u003F

反斜杠的转义: ==> u005C

}

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需要转义才可如:

String str2="a$b$c";

String strs[]=str2.split("\\u0024");for(String str:strs){

System.out.println(str);

}

java双引号的转义字符_JAVA中转义字符相关推荐

  1. java双引号嵌套_java和javascript双引号嵌套的问题

    双引号不能嵌套双引号,否则一对双引号就结束了 java中双引号中嵌套双引号需要转义:public class Test{ public static void main(String[] args){ ...

  2. php双引号表示什么,PHP中的单引号和双引号字符串有什么区别?

    PHP中的单引号和双引号字符串有什么区别? 我不是PHP编程的专家,但我有点困惑为什么我在PHP中看到一些代码用单引号放入字符串,有时用双引号. 我只是在.NET或C语言中知道,如果它是单引号,这意味 ...

  3. c语言中常量单双引号,C语言常量中字元与字串 除了单引号与双引号的区别外,还有什么不同。...

    C语言常量中字元与字串 除了单引号与双引号的区别外,还有什么不同.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C语言 ...

  4. java双引号的转义字符_好程序员Java教程分享常见的转义字符

    原标题:好程序员Java教程分享常见的转义字符 好程序员Java教程分享常见的转义字符,在Java字符常量中,反斜杠(\)是一个特殊的字符,被称为转义字符,它的作用是用来转义后面一个字符.转义后的字符 ...

  5. java 字符串中转义字符_Java中的转义字符

    java 字符串中转义字符 Learn how we can use escape sequence in Java 了解如何在Java中使用转义序列 These characters can be ...

  6. Java双引号变成转义字符quot;解决办法

    Java中:利用StringEscapeUtils.unescapeHtml4强转 String newJson = StringEscapeUtils.unescapeHtml4(jsonStr); ...

  7. java插入数据库字符串拼接_java中PreparedStatement解决需转义字符向数据库中插入时的转义问题 | 学步园...

    简单的执行如下语句去做数据库的插入操作是有问题的!它处理不了单引号,双引号等需要转义的字符的插入问题! String sql = "insert into emailOriginal(id, ...

  8. java常用的转义字符_java常用转义字符

    JAVA中转义字符2009-08-12 17:40JAVA中转义字符: 1.八进制转义序列:\ + 1到3位5数字:范围'\000'~'\377' \0:空字符 2.Unicode转义字符:\u + ...

  9. js拼装html单引号双引号,js、html中的单引号、双引号及其转义使用

    js.html中的单引号.双引号及其转义使用 在js中对相关字符做判断或取值的时候很多情况下都会用到这些. ------ 在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下: IE提示 ...

最新文章

  1. jupyter和matlab的配置
  2. VTK:Math之1DTupleInterpolation
  3. platform_device_系列函数及其设备注册的作用
  4. SMTP协议原始命令码和工作原理
  5. 网站建设:部署与发布
  6. C# string转double,double转string
  7. 过滤器获取service方法返回慢_Spring Cloud Gateway-全局过滤器(Global Filters)
  8. python excel 提取特定行_Python之从Excel一列内提取数字
  9. 光配件招标采购技术标准
  10. 电脑wincc服务器配置文件,WinCC客户端与冗余服务器配置步骤
  11. 【Docker Desktop】Neo4j
  12. 北斗与GPS有哪些区别?
  13. erlang Error in process with exit value: {undef,[{M,F,[A],[]}]}
  14. 关于async await 等任务队列插话
  15. MySQL深入浅出之索引
  16. Android——百度语音唤醒
  17. 1.2 二维三维空间向量组的线性组合
  18. iPad air2 充不进去电
  19. 2.4G无线音频模块方案测评之RODE录音麦
  20. 通过frp代理配合teamview使用局域网远程桌面

热门文章

  1. dynamic和匿名对象
  2. 寄存器(cpu工作原理)
  3. Android中传递对象的三种方法
  4. 多线程—线程池Executor框架及四种常用线程池
  5. IOS的Alamofire5.4高版本上传图片
  6. hashmap应用场景_Redis 5种数据结构 及使用场景分析
  7. SOL注入——HTTP头部注入(2)(七)
  8. php stortime,文件存储 | 综合话题 | Laravel 5.3 中文文档
  9. glVertexAttribPointer第一个参数理解
  10. 向日葵远程使用备忘录