栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 小心注释中由Unicode转义序列引发的错误

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 小心注释中由Unicode转义序列引发的错误

Java 小心注释中由Unicode转义序列引发的错误

Java中的注释是否会引发错误呢?看下面这个注释:

// look inside C:users

看起来似乎没什么问题,但实际上这个注释放在程序中会产生错误,以下面这段程序为例

public class Main {
    public static void main(String[] args) {
        // look inside c:user
        System.out.println("hello");
    }
}

运行main方法会出现错误,下面是对应的报错信息

Error:(3, 27) java: 非法的 Unicode 转义

产生这种情况的原因是Java中的Unicode转义序列会在解析代码之前得到处理。举个例子:

String str = "u0022+u0022";

u0022是转义序列"的Unicode值,所以str的值会是"+"吗?实际上并不是,u0022会在代码解析之前被转换成",所以str = ""+"",也就是一个空串。

回到最初的问题,由于//look inside C:users这段注释中存在u,而其后并不是一个4位的十六进制数,因而程序在处理Unicode转义序列时出现了错误。

类似的情况:

// u000A is a newline

上面的这个注释也存在问题,u000A是转义序列n的Unicode值,在代码被解析之前,u000A会被替换成一个换行符。

总而言之,在注释中出现u十分危险

参考资料:

[1] Cay S.Horstmann 著,林琪 苏钰涵等译.Java核心技术 卷1(原书第11版).北京:机械工业出版社,2020:32-33.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/337089.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号