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());
}
}
public class SplitTest {
public static void main(String[] a)
{
String aa = "ahjkhds|你说的|asd";
String[] b = aa.split("\\u007C");
for(int i = 0; i< b.length; i++)
{
System.out.println(b[i]);
}
}
}
对于竖线等特殊的字符的转移在string的split()方法中使用需要用"\\"来表示,比如:竖线表示为"\\|",才能被正常转义。
对该程序的一种很肤浅的分析会认为它应该打印出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的视频www.ppst.com
分享到:
相关推荐
### JAVA转义字符详解 在Java编程语言中,转义字符是一种特殊的形式,用于表示一些预定义的字符或控制字符。这些字符对于处理文本、字符串以及格式化输出等任务至关重要。本文将详细介绍Java中的转义字符,包括它们...
### Java转义字符详解 #### 一、八进制转义序列 在Java中,八进制转义序列是通过`\`后跟1至3位的八进制数字来表示的,其范围从`\000`到`\377`。这种转义序列主要用于表示ASCII字符集中的一部分字符。 **示例:** ...
### Java转义字符详解 #### 一、概述 在编程语言中,为了处理特殊字符或控制符,常常会使用到转义序列。Java作为一种广泛使用的编程语言,也提供了一套丰富的转义字符来帮助开发者更好地处理字符串数据。本文将...
Java转义字符的使用和理解
在Java编程语言中,转义字符是用于在字符串或字符字面量中表示特殊意义的字符。这些字符在源代码中以反斜线(\)开头,随后跟特定的序列,以便让编译器理解其真正的含义。以下是Java中转义字符的详细解释: 1. **八...
Java 关键字、标识符、注释、转义字符详解 Java 语言中有四个重要的概念:关键字、标识符、注释和转义字符。这些概念是 Java 语言的基础,理解这些概念对于编写 Java 代码非常重要。 一、Java 关键字 Java 关键字...
excel格式,方便查询 本人整理的ascii码,有详细想介绍ascii控制字符的意义 还包括了c、c++、java所有的转义字符
### 常见转义字符在Java中的应用与解析 #### 概述 在编程语言中,转义字符是一类特殊的字符序列,用于表示那些在文本中无法直接表示或者具有特殊含义的字符。Java作为一种广泛使用的面向对象编程语言,支持多种...
在Java编程语言中,Unicode编码是一种广泛使用的字符集,它包含了世界上几乎所有的文字,包括中文。Unicode使得在程序中处理不同语言的文本变得更加方便。本文将深入探讨如何在Java中进行中文字符到Unicode编码的...
为了解决这个问题,Mybatis提供了一些处理转义字符的方式,以确保SQL语句能够正确地写入Mapper.xml文件中并被解析。 在Mapper.xml文件中处理转义字符的常见方法主要有以下几种: 1. 常用的XML转义字符写法 在XML中...
根据提供的文件信息,我们可以深入探讨转义字符在Java中的应用及其背后的原理。 ### 转义字符概述 转义字符是源代码中用于表示不能直接输入或具有特殊含义的字符的一种方式。在Java中,转义字符主要分为以下几类:...
本文将围绕“gson转义字符”这一主题展开,深入探讨如何避免Gson在使用时自动将一些字符转为Unicode转义字符。 ### 一、问题背景 在Java项目中,我们经常会使用Gson来处理JSON格式的数据。例如,我们需要将一个...
### JAVA实现HTML转义字符及CSS清除解析 #### 一、引言 在Web开发中,经常需要处理用户提交的数据,为了避免XSS攻击等问题,通常需要对这些数据进行一定的处理,比如转义HTML特殊字符、清除HTML标签以及从CSS样式中...
Java-转义字符参考
在Java编程语言中,转义字符是用于表示特殊符号或控制序列的一种方法。这些字符对于字符串处理、格式化输出以及处理特殊字符具有重要意义。本文将详细介绍Java中的常见转义字符及其用途。 ### 1. 基本转义字符 ###...
2. 常见的Java转义字符 - \":表示双引号 - \':表示单引号 - \\:表示反斜杠 - \n:表示换行符 - \t:表示制表符 - \r:表示回车符 - \b:表示退格符 - \f:表示形式 feed 字符 - \uXXXX:表示Unicode字符...
"java csv 读写框架特殊字符转义" Java CSV 读写框架是基于 Java 注解的 CSV 读写框架,具有 Fluent 流式写法、基于 Java 注解、支持自定义的转换和机敏配置、内置 8 大根本类型以及 String 类型转换等特性。该框架...
在Java开发中,处理HTML内容时,有时我们需要清除HTML转义字符,以确保文本在显示或存储时不会解析为HTML标签。HTML转义字符是用于在HTML文档中表示特殊字符的字符实体,例如 `会被转义为 `<` 以防止浏览器将其...
本篇文章将详细介绍Java中的转义字符,包括普通转义字符序列、八进制转义字符和Unicode转义字符。 1. 八进制转义序列: 八进制转义序列由反斜线(\)后跟1到3位的八进制数字组成,范围从'000'到'377'。这种转义...
在Java语言中,转义字符具有特殊的含义,它们允许程序员在字符串或字符字面量中插入特定的字符序列。以下详细介绍了Java中转义字符的类型和它们的应用。 1. 八进制转义序列: 在Java中,八进制转义序列由反斜线(\...