首页 > 编程知识 正文

Java中转义符,合法的转义字符

时间:2023-05-04 06:15:36 阅读:8991 作者:2716

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

1.8进制转义序列 1到3位5数字; 范围'00'~'377 '

0 :空字符

2.Unicode转义字符: U4个十六进制数; 0~65535

u0000 :空字符

3 .特殊字符:只有三个

' :双引号

' :单引号

\:反斜杠

4 .控制字符: 5个字符

'单引号字符

反斜杠字符

r回车

n换行符

f走纸换页

t侧跳

b取消资格

的转义:==u002E

美元符号转义: $==u0024

幂符号转义: ^==u005E

大括号转义: {==u007B

左角括号转义: [==u005B

左括号转义: (==u0028

竖线转义:|==u007C

右括号转义: (==u0029

星号转义: *==u002A

加号转义:==u002B

的逃脱:==u003F

反斜线转义:==u005C

=====================================

下面的程序使用了两个Unicode转义字符。 这些字符用十六进制代码表示Unicode字符。 那么,这个程序打印什么?

Java代码

公共类封装器out {

publicstaticvoidmain (字符串[ ] args ) {

//u0022是双引号中的Unicode转义字符

system.out.println (a (u 0022.length ) )。

(u0022b'.length ) ) );

}

}

公共类封装器out {

publicstaticvoidmain (字符串[ ] args ) {

//u0022是双引号中的Unicode转义字符

system.out.println (a (u 0022.length ) )。

(u0022b'.length ) ) );

}

}

该程序的肤浅分析认为,由双引号' au0022.length ()u0022b )标识的字符串之间共有26个字符,因此需要打印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代码

系统. 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数字;范围'00'~'377' :空字符 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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。