java中转义符号\的使用

 

首先很重要一点,转义字符是供编译器识别的。当java文件编译成.class文件后就不存在转义一说了。

比如,定义一个字符串String a值为双引号“。由于java的语法规定,字符串字面量是要由一对双引号括起来。如果这样定义String a = " " ";编译器肯定识别a为空字符串,后面不成对的双引号还会报错。这时候需要一个转义字符(java选择了\)来标识中间的双引号是字符串值,而不是语法中用来包裹字符串的特殊字符。而编译后的class文件保存值“到常量池中,不存在歧义的问题(具体可以看关于class文件讲解的文章)。

 

一。八进制转义序列:用于表示ascii中的字符

规则: \+1到3位8进制数字;范围'\000'~'\177'

编译器是会自动识别转义符号\后可用的数字。

比如:"\402" 超过了最大值177,编译器就会识别为改字符串为空格加上一个字符”2“,再比如”\092",9不在8进制数字中,编译器就是识别为\0和字符“92”

 

二。unicode转义字符:用于表示unicode字符集中的字符

规则:\u+4个十六进制数字;范围0~65535

必须要写全4个数字,即只能写\u0000而不能写\u0

 

三。特殊字符:单引号'、双引号"、反斜线\

java字符串定义中,双引号必须转义,即必须这样写:"\"";而单引号可不转义,即可以这样写" ' ";

相同的字符定义中,单引号必须转义,' \' ';双引号可不转义' " ';

反斜线不管作为字符还是字符串的值都需转义

 

四。控制字符

\r回车

\n换行

\f走纸换页

\t横向挑格

\b退格

 

这里需要注意,unicode转义字符和其他转义类型,转义的位置不同。如下句话说的:编译器在将程序解析成各种符号之前,先将Unicode转义字符转换成为它们所表示的字符。可以理解为编译器先将源文件中unicode转义字符转成对应字符再解析代码意义。也就是unicode转义字符只是字符的另一种写法,即\u0022(双引号)只改变u0022的字面含义,不改变它所代表的双引号的代码含义。

 

比如:

System.out.println("\u0022.length()+\u0022".length());

 输出结果是0,输出内容等同"".length()+"".length()

System.out.println("\42.length()+\42".length());
        System.out.println("\".length()+\"".length());

 输出结果都是12

 

再比如

System.out.println("\42");  输出“
System.out.println("\"");    输出”
System.out.println("\u0022");  报“未结束字符串”错误

 

 

 

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值