Java中的Unicode
Posted 二木成林
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的Unicode相关的知识,希望对你有一定的参考价值。
Java 对 Unicode转义字符不会进行任何特殊的处理,只是简单的将其替换称相应的字符。
例如"\\u000a"会被替换为换行符"\\n","\\u002b"会被替换为"+"。
public class Demo {
public static void main(String[] args) throws ParseException {
// 这是注释\\nSystem.out.println("Hello World");
// 这是注释\\u000aSystem.out.println("Hello World");
}
}
如上面的代码会打印出"Hello World",就是因为将注释中的"\\u000a"字符串解析成了换行符"\\n",但单独在注释代码中室友换行符"\\n"那么仅仅是普通字符,只有是Unicode值时才会生效。
我们查看Demo类被编译后的代码如下,发现Demo.class文件中确实"\\u000a"后面的代码被换行并且执行了。
public class Demo {
public Demo() {
}
public static void main(String[] args) throws ParseException {
System.out.println("Hello World");
}
}
例如下面代码中的Unicode值也会得到执行,结果是"5 + 10 = 15"。
public class Demo {
public static void main(String[] args) throws ParseException {
System.out.println("5 + 10 = \\u0022+ (5+10) + \\u0022");
}
}
编译后的Demo.class为:
public class Demo {
public Demo() {
}
public static void main(String[] args) throws ParseException {
System.out.println("5 + 10 = 15");
}
}
实际上"\\u0022"被解释为双引号,所以它的执行过程是这样的:
public class Demo {
public static void main(String[] args) throws ParseException {
System.out.println("5 + 10 = \\u0022+ (5+10) + \\u0022");
System.out.println("5 + 10 = " + (5 + 10) + "");
System.out.println("5 + 10 = " + 15 + "");
}
}
除了上面这些Unicode值之外,大部分Unicode值都会被替换成其对应的字符,无论是中文字符还是英文或数字字符。
我们可以通过unicode中文互转网站来讲中文字符转换成Unicode值。
将这串Unicode值放在Java代码中也会被执行。
public class Demo {
public static void main(String[] args) {
System.out.println("\\u6211\\u7231\\u004a\\u0061\\u0076\\u0061");
}
}
可以看到编译后的Demo.class的内容如下:
public class Demo {
public Demo() {
}
public static void main(String[] args) {
System.out.println("我爱Java");
}
}
但如果我们只是单纯的在字符串中使用"\\u000a",就会报错。但在注释中使用却没有任何问题。
注意:在Java中'\\n'是一个字符,而不是一个字符串(即两个字符'\\'和'n')。
所以'\\n'的Unicode值就是'\\u000a',而不要把它当作一个字符串去计算它的Unicode值。
以上是关于Java中的Unicode的主要内容,如果未能解决你的问题,请参考以下文章