`

JAVA中转义字符

    博客分类:
  • java
 
阅读更多

JAVA中转义字符2009-08-12 17:40JAVA中转义字符:

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

 

 

 


转义序列 含义
\n 回车(\u000a)
\t 水平制表符(\u0009)
\b 空格(\u0008)
\r 换行(\u000d)
\f 换页(\u000c)
\' 单引号(\u0027)
\" 双引号(\u0022)
\\ 反斜杠(\u005c)
\ddd 三位八进制
\udddd 四位十六进制
JAVA中转义字符:
1.八进制转义序列:
\ + 1到3位5数字;范围'\000'~'\377'
\0:空字符
2.Unicode转义字符:
\u + 四个十六进制数字;0~65535
\u0000:空字符
八进制的是1到3个数字并且注意数值范围,如果超了范围也会编译错误的,而十六进制的转义必须是4个十六进制数字,而且有一些无法转义,如'\u000a',无法转移,会出现编译错误,而且相当多的数字没有对应的字符,只会转义成问号 而对于数字的转义,只要不超过范围既可以了。
3.特殊字符:就3个 \":双引号 \':单引号 \\:反斜线
4.控制字符:5个 \' 单引号字符 \\ 反斜杠字符 \r 回车 \n 换行 \f 走纸换页 \t 横向跳格 \b 退格
点的转义:. ==> u002E
美元符号的转义:$ ==> u0024
乘方符号的转义:^ ==> u005E
左大括号的转义:{ ==> u007B
左方括号的转义:[ ==> u005B
左圆括号的转义:( ==> u0028
竖线的转义:| ==> u007C
右圆括号的转义:) ==> u0029
星号的转义:* ==> u002A
加号的转义:+ ==> u002B
问号的转义:? ==> u003F
反斜杠的转义: ==> u005C

分享到:
评论

相关推荐

    详解JAVA中转义字符

    以下详细介绍了Java中转义字符的类型和它们的应用。 1. 八进制转义序列: 在Java中,八进制转义序列由反斜线(\)后跟1至3位八进制数字构成,其表示的字符编码范围从'\000'到'\377'。例如,'\101'代表大写字母'A',...

    Java中转义字符反斜杠\的代替方法及repalceAll内涵解析

    Java中转义字符反斜杠的代替方法及repalceAll内涵解析 Java中转义字符反斜杠的代替方法是指在Java字符串中使用反斜杠(\)作为转义字符,以便将特殊字符转换为普通字符。例如,在Java字符串中,双引号(")需要使用...

    初学者,Java转义字符

    ### Java转义字符详解 #### 一、八进制转义序列 在Java中,八进制转义序列是...以上内容涵盖了Java中转义字符的基础知识及应用场景,对于Java编程初学者来说,理解和掌握这些转义字符对于编写正确的代码至关重要。

    JAVA转义字符[文].pdf

    以下是Java中转义字符的详细解释: 1. **八进制转义序列**:这种类型转义序列以反斜线(\)开头,后跟1到3位的八进制数字,范围从`\000`到`\377`。例如,`\0`代表空字符。 2. **Unicode转义字符**:这种转义序列由...

    转义字符.txt

    ### Java中转义字符的处理 Java在处理字符串时,会自动解析转义字符,将其转换成对应的字符。然而,在某些情况下,转义字符的处理可能会导致意料之外的结果,尤其是在涉及Unicode转义字符时。例如,下面的代码片段...

    Java最新笔试面试题

    - **题目描述**:考察考生对于Java中转义字符的理解。 - **难度系数**:较高 - **解析**:在Java中,可以通过在字符串前面添加反斜杠`\`来阻止字符串中的转义字符被处理。例如,`\"`表示一个双引号字符,而非字符串...

    java中关于转义字符的一个bug

    在Java编程语言中,转义字符用于表示...通过了解和认识到Java中转义字符的这种行为,开发者可以更安全地编写代码,避免因转义字符使用不当而导致的bug,同时确保代码在不同的环境和编译器下都能保持一致性和正确性。

    2021-2022计算机二级等级考试试题及答案No.18343.docx

    Java中转义字符 - **题目内容**:Java中用于表示回车的转义字符是什么? - **解析**:在Java中,`\n`代表换行符,而`\r`代表回车符。因此,答案为C.\n。 #### 18. VB工程文件扩展名 - **题目内容**:VB工程文件...

    LoadRunner中转换字符串到URL编码

    在LoadRunner中,主要通过VU脚本来实现这一功能,常见的编程语言有C、VBScript或Java等。本案例聚焦于C语言的实现。 1. **LoadRunner中的C语言脚本** 在LoadRunner中,C语言脚本通常使用LR API(LoadRunner ...

    转换中文的过滤器(java 中转换中文)

    在Java编程语言中,处理中文字符的转换是一个常见的需求,特别是在进行数据处理、网络通信或者文件操作时。中文字符集的编码方式多样,包括GBK、GB2312、UTF-8等,不同编码间的转换可能导致乱码问题。本文将详细讲解...

    Java正则表达式处理特殊字符转义的方法

    以下是一个示例函数,展示了如何在Java中转义正则表达式的特殊字符: ```java import org.apache.commons.lang3.StringUtils; /** * 转义正则特殊字符($()*+.[]?\^{},|) * * @param keyword * @return */ ...

    java转换json所需的所有包(完整版)

    它可以直接将Java对象转换为JSON字符串,或者将JSON字符串反序列化为Java对象。使用`Gson`类,只需一行代码就能实现转换。 3. **Json-P(JSR 353)** Java API for JSON Processing (Json-P) 是Java EE规范的一...

    java中日期格式的转换

    本文将深入探讨如何在Java中进行日期格式的转换,这包括将日期对象转换为特定格式的字符串,以及将字符串转换回日期对象。此外,我们还将讨论如何在不同的日期类之间进行转换,例如从`java.util.Date`到`java.sql....

    java转json的jar包

    然后,可以使用`ObjectMapper`类将Java对象转换为JSON字符串: ```java import com.fasterxml.jackson.databind.ObjectMapper; public class Main { public static void main(String[] args) throws Exception { ...

    json格式转换为java实体类,idea导入即可

    在Java开发中,我们经常需要将JSON字符串转换为Java实体类,以便于操作和处理这些数据。 本资源提供了一种方便快捷的方法,通过IDEA(IntelliJ IDEA)工具,可以直接将JSON格式的数据转换为对应的Java实体类。IDEA...

    Java软件开发实战 Java基础与案例开发详解 13-6 转换流 共6页.pdf

    ### Java软件开发实战:转换流知识点详解 #### 13-6 转换流 ...以上就是关于Java中转换流的相关知识点介绍,通过这些知识点的学习和实践,开发者可以更好地理解和掌握如何高效地处理不同字符集下的文本数据。

    Java语言基础教程-Java NIO流篇1

    在Java NIO中,数据不是直接从通道读取到应用程序,也不是直接从应用程序写入通道,而是通过缓冲区进行中转。缓冲区有多种类型,如ByteBuffer、CharBuffer、IntBuffer等,它们都是抽象类Buffer的子类。缓冲区具有...

    Java火车票查询系统课程设计

    当用户在输入框中输入车站名称时,系统会自动提示所有以当前输入字符开头的车站选项;当用户将鼠标悬停在某个车次上时,系统还会显示“鼠标左键单击可以查看详细信息”的提示,方便用户进一步了解该车次的信息。 ##...

    c#和java base64不一致的解决方法

    1. 确保一致的字符编码:在C#和Java中,明确指定使用相同的字符编码进行字符串的编码和解码,例如,统一使用UTF-8。 2. 对字节序列的一致处理:确保在C#和Java中,对于超出ASCII范围的字节,采用相同的方式来处理。...

Global site tag (gtag.js) - Google Analytics