Java \uxxx、\uuxxx和\uuuxxx之间的差异
下一行来自: 如果符合条件的\后跟u或多个u,且最后一个u未后跟 按四个十六进制数字,则发生编译时错误 因此,这意味着以下几行将产生相同的结果:Java \uxxx、\uuxxx和\uuuxxx之间的差异,java,jls,Java,Jls,下一行来自: 如果符合条件的\后跟u或多个u,且最后一个u未后跟 按四个十六进制数字,则发生编译时错误 因此,这意味着以下几行将产生相同的结果: System.out.println('\u0065'); // prints "e" System.out.println('\uu0065'); // prints "e" System.out.println('\uuu0065'); // prints "e" 在\uxxx中使
System.out.println('\u0065'); // prints "e"
System.out.println('\uu0065'); // prints "e"
System.out.println('\uuu0065'); // prints "e"
在\uxxx中使用单个u与在\uuxxx中使用uu基本相同。我的问题是,为什么我们需要这种设计?后面引用的部分会说明原因: Java编程语言指定了一种将Unicode编写的程序转换为ASCII的标准方法,该方法将程序转换为可由基于ASCII的工具处理的形式。转换涉及将程序源文本中的任何Unicode转义转换为ASCII,方法是添加额外的u(例如,\uxxx变为\uuxxxxx),同时将源文本中的非ASCII字符转换为包含单个u的Unicode转义
这意味着它使转换为ASCII完全可逆,因为您知道哪些转义序列最初出现在代码中,哪些是通过转换添加的。后面引用的部分说明了原因: Java编程语言指定了一种将Unicode编写的程序转换为ASCII的标准方法,该方法将程序转换为可由基于ASCII的工具处理的形式。转换涉及将程序源文本中的任何Unicode转义转换为ASCII,方法是添加额外的u(例如,\uxxx变为\uuxxxxx),同时将源文本中的非ASCII字符转换为包含单个u的Unicode转义 这意味着它使转换为ASCII完全可逆,因为您知道哪些转义序列最初在代码中,哪些是通过转换添加的。提供了完整的信息,但不是外行术语 幕后发生的事情是源代码中的每个字符都转换为Unicode转义序列。所以当我们写这样的东西时:
ሴ
它将转换为:
\u1234 // Escape sequence for `ሴ` is `\u1234`.
\uu1234\u1234
现在,当我们写:
\u1234ሴ
它将转换为:
\u1234 // Escape sequence for `ሴ` is `\u1234`.
\uu1234\u1234
这样做是为了向后兼容。通过使用这种过程,我们可以从转义序列中恢复原始ASCII字符
在源代码(如ex\u1234)中输入的转义序列将获得uu并替换为\uu1234,而没有转义序列的字符将获得单个u,因此ሴ 将导致\u1234
下一行来自同一节,即:
Unicode转义生成的字符不参与进一步的Unicode转义
这些段落现在更有意义了:
Java编程语言指定了转换
用Unicode编写成ASCII的程序,可将程序更改为可由基于ASCII的工具处理的形式。转换涉及将程序源文本中的任何Unicode转义转换为ASCII,方法是添加额外的u(例如,\uxxx变为\uuxxxxx),同时将源文本中的非ASCII字符转换为包含单个u的Unicode转义
这个转换后的版本同样可以被Java编译器接受,并且表示完全相同的程序。通过将存在多个u的每个转义序列转换为少一个u的Unicode字符序列,同时将具有单个u的每个转义序列转换为相应的单个Unicode字符,可以从该ASCII格式恢复确切的Unicode源
提供完整的信息,但不是外行术语
幕后发生的事情是源代码中的每个字符都转换为Unicode转义序列。所以当我们写这样的东西时:
ሴ
它将转换为:
\u1234 // Escape sequence for `ሴ` is `\u1234`.
\uu1234\u1234
现在,当我们写:
\u1234ሴ
它将转换为:
\u1234 // Escape sequence for `ሴ` is `\u1234`.
\uu1234\u1234
这样做是为了向后兼容。通过使用这种过程,我们可以从转义序列中恢复原始ASCII字符
在源代码(如ex\u1234)中输入的转义序列将获得uu并替换为\uu1234,而没有转义序列的字符将获得单个u,因此ሴ 将导致\u1234
下一行来自同一节,即:
Unicode转义生成的字符不参与进一步的Unicode转义
这些段落现在更有意义了:
Java编程语言指定了转换
用Unicode编写成ASCII的程序,可将程序更改为可由基于ASCII的工具处理的形式。转换涉及将程序源文本中的任何Unicode转义转换为ASCII,方法是添加额外的u(例如,\uxxx变为\uuxxxxx),同时将源文本中的非ASCII字符转换为包含单个u的Unicode转义
这个转换后的版本同样有效
Java编译器可以接受,并且表示完全相同的程序。通过将存在多个u的每个转义序列转换为少一个u的Unicode字符序列,同时将具有单个u的每个转义序列转换为相应的单个Unicode字符,可以从该ASCII格式恢复确切的Unicode源