详解JAVA中转义字符

发布时间 - 2026-01-11 02:48:27    点击率:

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

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。

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

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

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

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转义字符对照表

点的转义:. ==> 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中的转义字符  # java中转义字符  # java中的转义字符介绍  # java清除html转义字符  # java中关于转义字符的一个bug  # java处理转义字符↑ → ↓ 保存后的展示还原操作  # Java常见的转义字符举例详解  # Java利用转义字符过滤HTML中的标签  # Java转义字符详细介绍  # 双引号  # 的是  # 你可以  # 得多  # 单引号  # 换行  # 是一个  # 就会  # 如果你  # 是在  # 都有  # 你是  # 第一个  # 回事  # 第二个  # 给大家  # 更有  # 要知道  # 作为一个  # 被称为 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  音乐网站服务器如何优化API响应速度?  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  如何选择可靠的免备案建站服务器?  canvas 画布在主流浏览器中的尺寸限制详细介绍  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  Linux系统命令中screen命令详解  如何在万网ECS上快速搭建专属网站?  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  昵图网官方站入口 昵图网素材图库官网入口  Laravel如何使用Blade组件和插槽?(Component代码示例)  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  如何用花生壳三步快速搭建专属网站?  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  电商网站制作价格怎么算,网上拍卖流程以及规则?  做企业网站制作流程,企业网站制作基本流程有哪些?  Laravel如何使用模型观察者?(Observer代码示例)  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  高端企业智能建站程序:SEO优化与响应式模板定制开发  如何在橙子建站中快速调整背景颜色?  微信小程序 input输入框控件详解及实例(多种示例)  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  BootStrap整体框架之基础布局组件  实例解析Array和String方法  jquery插件bootstrapValidator表单验证详解  Android中AutoCompleteTextView自动提示  如何在阿里云高效完成企业建站全流程?  利用python获取某年中每个月的第一天和最后一天  如何在IIS中配置站点IP、端口及主机头?  如何在阿里云域名上完成建站全流程?  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  如何在局域网内绑定自建网站域名?  如何用VPS主机快速搭建个人网站?  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  Laravel如何处理文件下载请求?(Response示例)  Python高阶函数应用_函数作为参数说明【指导】  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  html5的keygen标签为什么废弃_替代方案说明【解答】  JS实现鼠标移上去显示图片或微信二维码  如何在阿里云通过域名搭建网站?  如何快速生成橙子建站落地页链接?  网站制作软件有哪些,制图软件有哪些?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法