当前位置: 首页 > 知识库问答 >
问题:

为什么显示错误的代码无效的Unicode?

戚研
2023-03-14
//System.out.println("hii");'\uxxx'

注释了println语句,但未注释unicode。为什么?

共有1个答案

闻人鸿文
2023-03-14

Java允许您在源代码中使用Unicode。与许多其他语言不同的是,它允许您在任何地方这样做,当然包括注释。并且它还允许在标识符中使用它,因此您可以编写如下所示的合法Java代码:

    String हिन्दी = "Hindi";

变量名是完全合法的(尽管编码惯例不允许这样使用)。

因此就javac而言,源代码是Unicode的。问题是它可以用不同的编码来表示,而且有些编辑器不支持Unicode,而且有些地方使用非ASCII文件会产生问题。

String s = "123";
String s \u003d "123"\u003b

并且它将被正确地编译并且没有任何问题。实际上,您可以用Unicode转义来编写整个程序,包括换行符。Java编译器根本不关心Unicode转义是在文字中还是在源代码本身中。

但这样做的结果是,编译器需要首先解释Unicode转义,然后才将源代码分解为标记(如标识符、运算符和注释),然后检查语法等。

这意味着如果源代码中有非法的Unicode转义序列,即使它在注释中,也会被标记为错误,因为此时编译器甚至不知道它正在查看的代码的特定部分是注释。

 类似资料:
  • 错误:无法找到或加载主类MyGridLayout.MyGridLayout C:\users\home\AppData\local\netbeans\cache\8.2\executor-snippets\run.xml:53:Java返回:1构建失败(总时间:0秒)

  • 问题内容: 我正在尝试使用JDBC准备的语句进行插入时获取最后插入的行ID。我有一个自动增量主键列作为表中的标识列。我的代码如下: 如果删除此行,则不会出现此错误: 但是在谷歌搜索之后,使用此代码似乎没问题,它应该返回我上次插入的行ID。 表说明: 问题答案: Oracle JDBC文档 说: 如果未明确指示键列,则Oracle JDBC驱动程序将无法识别需要检索的列。使用列名或列索引数组时,Or

  • 包装呈现值;导入java。util。扫描仪; 公共类PresentValue{ }问题是写一个方法presentValue来执行此计算。该方法应接受未来值、年利率和年数作为参数。它应该返回现值,即您今天需要存入的金额。在一个程序中演示该方法,该程序允许用户试验公式项的不同值。 这里是公式P=F/(1r)^2

  • 代码- 即使db实例存在,它也会为某些调用抛出错误。错误详细信息- 你能告诉我我在这里缺了什么吗? 错误含义-

  • 问题内容: 我似乎找不到解决此问题的方法。我正在做的是声明一个整数,它告诉我代码不可访问。 问题答案: 一旦使用方法,您将返回到首先调用该方法的方法。返回后放置的任何语句都是没有意义的,因为那是在不严重违反程序计数器的情况下无法到达的代码(在Java中可能是不可能的)。

  • 问题内容: 我被告知不要像这样添加内容: 这有什么问题?我还有什么其他选择? 问题答案: 每次设置时,都必须解析HTML,构造DOM并将其插入文档中。这需要时间。 例如,如果有数千个div,表,列表,图像等,则调用将导致解析器重新重新解析 所有这些内容 。这也可能破坏对已经构造的DOM元素的引用,并引起其他混乱。实际上,您要做的就是在末尾附加一个新元素。 最好只致电: 这样,将不会再次解析的现有内