ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java表达式的陷阱——输入法、注释字符和转义字符的陷阱

2020-05-04 18:01:59  阅读:241  来源: 互联网

标签:字符 输入法 Java 陷阱 程序 转义字符 Unicode


Java表达式的陷阱——输入法、注释字符和转义字符的陷阱
                                          
3、输入法、注释字符和转义字符的陷阱
3、1 输入法导致的陷阱
         对于Java语言而言,它使用空格、Tab制表符(半角状态)作为分隔符,因此一个Java程序中通常需要包含大量空格。但如果不小心把输入法切换到全角状态,那么输入的空格都会变成全角状态,编译该程序时将会提示"非法字符:\12288"的错误。
注意:Java程序中通常不能包含全角字符,但Java程序的字符串和注释中完全可以包含全角字符。 3、2 注释字符的陷阱
public class BinaryTest { //存放位置:D:\user\Java学习 public static void main(String[] args) {  int i = 0b1010_1010;  byte b = (byte)0b1010_1010;  System.out.println(i == b); }}       上面代码将会报错:Invalid unicode。也就是说Java程序并没有完全忽略注释部分的内容。编译器在上面程序中检测到一个非法字符,Java程序允许直接使用\uXXXX的形式代表字符,要求\u后面的4个字符必须是0~F字符,而上面注释中包含了\user,这不符合Java对Unicode转义字符的要求。 3、3 转义字符的陷阱        Java程序提供了三种方式来表示字符。 直接使用单括号括起来的字符值,如'a'。使用转义字符,如'\n'。使用Unicode转义字符,如'\u0066'。       Java对于Unicode转义字符时不会进行任何处理,它会将Unicode转义字符直接替换为对应的字符,这将会给Java程序带来一些潜在的陷阱。
public class StringLength { public static void main(String[] args) {  System.out.println("abc\u000a".length()); }}       上面程序试图计算“abc\u000a”字符串的长度,表面上看这个程序应该输出4,但是编译程序是会报错:String literal is not properly closed by a double-quote。引起这个错误的原因是Java对Unicode转义字符不会进行任何特殊处理,只是简单的将Unicode转义字符替换成相应的字符。对于\u000a而言,它相当于一个换行符。
       另外,在注释行中如果使用\u开头也要注意Unicode转义字符的相关问题。
————————————————
版权声明:本文为CSDN博主「Never_Blue」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Never_Blue/article/details/70572328

标签:字符,输入法,Java,陷阱,程序,转义字符,Unicode
来源: https://www.cnblogs.com/lijiahui-123/p/12827483.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有