【转】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字符插入到源文件中。
转载于:https://www.cnblogs.com/springMVC/archive/2011/10/08/2204748.html
【转】JAVA中的转义字符相关推荐
- 7、Java基础——从控制台输入:Scanner类的的用法、数据类型转换、字符型的运算、print与println的区别、Java中的转义字符
目录 课前先导 一.Scanner类的用法 二.Scanner语句分析 1.Scanner类 2.Scanner sc = new Scanner(System.in) 3.Scanner获取不同类型 ...
- Java中xml转义字符和gt,gte,lt,lte缩写
java mybatis XML文件中不允许出现">"."<"之类的符号.需要转义 字段 符号 说明 < ; < 小于号 & ...
- Java中的转义字符
一.常见的转义字符 转义字符对应的英文是escape character , 转义字符串(Escape Sequence) 字母前面加上捺斜线""来表示常见的那些不能显示的ASCI ...
- 【图文详解】JAVA中的转义字符
\t-制表符 table \r-回车 return println中 'ln' 为换行 '\n' 为换行符 控制台输出 ' .'' 和 \ 控制台输出"test"(带双引号) 也可 ...
- 在java中下列说法不正确的是,【单选题】关于java中的转义字符,下列说法不正确的是
A. 是制表位 B.
可以实现换行 C. 可以在页面中显示双引号 D. \可以在页面实现注释...
实际流体总流的能量方程是工程流体力学中最常用的基本方程之一,其应用条件是().A.流动是恒定 雷诺数Re反映了()的对比关系.A.黏滞力与重力B.重力与惯性力C.惯性力与黏滞力D.黏滞力与动水 201 ...
- Java程序设计语言基础02:Java中的基本数据类型和运算符
目录 1. Java中的基本数据类型 1.1 概述 1.2 基本数据类型的值域 1.2.1 byte类型 1.2.2 short类型 1.2.3 int类型 1.2.4 long类型 1.2.5 fl ...
- Java中的正则表达式 regex
常用类解析:正则表达式 regex 前言 一.正则表达式 二.匹配规则 三.匹配任意字符 四.匹配数字 五.匹配常用字符 六.匹配空格字符 七.匹配非数字 八.重复匹配 九.正则表达式小总结 十.匹配 ...
- java中\是什么意思?
java中\是转义字符,java传递数组如:[" 1001","1002"]
- java中是什么意思?
java中是转义字符,java传递数组如:[" 1001","1002"]
最新文章
- 基于loudmouth的XMPP客户端DEMO
- 在IntelliJ IDEA中创建Web项目
- 初识Tcl(九):Tcl 字典
- Sealed,new,virtual,abstract与override的区别
- 【Bit-Z月报】11月送出182.4万美元活动奖励,真是豪气
- Hibernate缓存和ehcache
- webstrom使用方法
- 浙江省计算机二级excel函数,浙江省计算机二级excel练习5操作要求
- 第二章 认识计算机硬件
- JavaScript仿淘宝智能浮动
- 独立站引流真的那么难吗?
- jQuery 遍历 - prev() 方法
- 疫苗接种率低?不用怕,互联网公司给出解决之道
- 为了探究不同光照处理_初中化学 | 控制变量法与影响因素的探究
- HTML5权威指南 6.多媒体相关API
- 在哪一类期刊中发表论文最难,SCI、SSCI、还是AHCI?
- android镜像_如何在任何Windows PC上镜像和控制您的Android手机
- LOL英雄联盟打不了文字,打字就一闪一闪的,英文可以,解决方式
- MTK摄像头调试工具 CCT 的使用
- 网络正常连接,浏览器无法访问网络
热门文章
- python中dataframe合并列名日期到季度_python – 如何在特定日期范围内的pandas列DataFrame中对某些值求和...
- flutter从0到1构建大前端应用 pdf_前端骨架屏都是如何生成的
- c语言字体取模软件下载,非常好用的lcd汉字取模软件下载_非常好用的lcd汉字取模软件官方下载-太平洋下载中心...
- 2021年茂名市高考成绩查询,2021年茂名高考最高分多少分,历年茂名高考状元
- a113 智能音箱芯片方案_高通入局智能音箱,首款四核单芯片方案曝光
- 如何挑选家用交换机 交换机选购攻略分享
- 什么是DVI光端机?dvi光端机的优势有哪些?
- 多模光纤收发器购买时需要注意什么问题?
- Wi-Fi和WLAN有什么区别
- ci 邮件 html模板,CI Email类发邮件