为什么某些字符文字会导致Java中的语法错误?在最新一期的JavaSpecialists时事通讯中,作者提到一段代码在Java中无法编译publicclassA1{CharacteraChar='u000d';尝试编译它,你会得到一个错误,例如:A1.java:2:Illegalend-of-linecharacterincharacterliteralaChar='u000d';^为什么等效的c#代码没有这样的问题?公共类CharacterFixture{charaChar='u000d';我错过了什么吗?编辑:我的初衷是c#编译器如何正确解析unicode文件(如果是这样),为什么java仍然坚持使用不正确的(如果是这样)解析?编辑:我也想恢复原来的问题标题?为什么要进行如此大量的编辑,我强烈怀疑它严重改变了我的意图。Java编译器将uxxxx转义序列转换为第一步,甚至在分词器破解代码之前。当它真正开始标记化时,不再有uxxxx序列;它们已经变成了它们所代表的字符,因此对于编译器来说,您的Java示例看起来就像您实际上在那里键入了一个回车符一样。它这样做是为了提供一种在源代码中使用Unicode的方法,而不管源文件的编码如何。即使ASCII文本仍然可以在必要时完全表示Unicode字符(以牺牲可读性为代价),并且由于它很早就完成了,所以它们几乎可以在代码中的任何地方使用。(你可以说u0063u006cu0061u0073u0073u0020u0053u0074u0075u0066u0066u0020u007bu007d,如果你想生气或折磨自己,编译器会将它读作classStuff{}。)C#不会那样做。uxxxx稍后将与程序的其余部分一起翻译,并且仅在某些类型的标记(即标识符和字符串/字符文字)中有效。这意味着它不能在某些可以在Java中使用的地方使用。clu0061ss不是关键字。以上是C#学习教程:为什么某些字符字面量在Java中会导致语法错误?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
