English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En Java, puedes definir
char c = '\u4f60'; char m = '\u0045'; char e = '\u554a';
Estos literales, por ejemplo:
System.out.println("\u535a\u5ba2\u56ed");
Este código no presentará problemas de malas interpretaciones de caracteres en cualquier entorno de codificación
Pero no puedes definir tal literal:
char c = ' '; char m = '\u0027';
Esto se debe a y \u0027Son caracteres de escape especiales, Java no proporciona ningún tratamiento especial para los caracteres de escape Unicode en las cadenas literales. El programa los convertirá directamente en los caracteres que representan[JLS] 3.2]。
\u000a es un LineFeed, es decir, salto de línea, por lo que el programa se compilará como
char c = ' ';
Naturalmente, hubo un error de compilación
Otro ejemplo es:
System.out.println("a\u0022.length()+\u0022b".length());
Un análisis muy superficial del programa podría considerar que debe imprimir26, un análisis más profundo podría considerar que el programa debe imprimir16, si realmente ejecuta una vez, encuentra que el resultado ni es26ni16, sino que2.
Porque, \u0022Son caracteres de escape de comillas dobles, el programa se compilará finalmente como
String str = "a".length()+"b"; System.out.println(str.length());
Basado en este caso, escribí un ejemplo, todos pueden ejecutarlo y probar los resultados
String str = "\u0061\u0022\u002b\u0028\u006e\u0065\u0077\u0020\u006a\u0061\u0076\u0061\u002e\u0075\u0074\u0069\u006c\u002e\u0063\u006f\u006e\u0063\u0075\u0072\u0072\u0065\u006e\u0074\u002e\u0043\u0061\u006c\u006c\u0061\u0062\u006c\u0065<\u0056\u006f\u0069\u0064>\u0028\u0029\u007b\u0070\u0075\u0062\u006c\u0069\u0063\u0020\u0056\u006f\u0069\u0064\u0020\u0063\u0061\u006c\u006c\u0028\u0029\u007b\u0074\u0068\u0072\u006f\u0077\u0020\u006e\u0065\u0077\u0020\u0052\u0075\u006e\u0074\u0069\u006d\u0065\u0045\u0078\u0063\u0065\u0070\u0074\u0069\u006f\u006e\u0028\u0022\u0073\u0075\u0070\u0072\u0069\u0073\u0065\u0020\u006d\u0061\u0074\u0068\u0065\u0072\u0020\u0066\u0075\u0063\u006b\u0065\u0072\u0021\u0022\u0029\u003b\u007d\u007d\u0029\u002e\u0063\u0061\u006c\u006c\u0028\u0029\u002b\u0022"; System.out.println(str);
Esto es todo el contenido de este artículo, espero que el contenido de este artículo pueda proporcionar cierta ayuda a su aprendizaje o trabajo, y también espero que reciba más apoyo al tutorial de grito!
Declaración: el contenido de este artículo se obtiene de la red, el copyright pertenece al propietario original, el contenido se contribuye y carga de manera autónoma por los usuarios de Internet, este sitio no posee los derechos de propiedad, no se ha realizado un procesamiento editorial manual y no asume ninguna responsabilidad legal relevante. Si encuentra contenido sospechoso de copyright, le invitamos a enviar un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, por favor reemplace # con @) para denunciar, y proporcione evidencia relevante. Una vez confirmado, este sitio eliminará inmediatamente el contenido sospechoso de infracción.