开发者社区 问答 正文

哪些声明有效?

2

选择三个正确的答案(有效的声明)。

(一种) char a = '\u0061';

(b) char 'a' = 'a';

(C) char \u0061 = 'a';

(d) ch\u0061r a = 'a';

(e) ch'a'r a = 'a';

答案:(a),(c)和(d)

书:

Java SCJP认证程序员指南(第三版)

有人可以解释选项(c)和(d)的原因,因为它对我不起作用。

展开
收起
被纵养的懒猫 2019-10-08 17:12:52 328 分享 版权
阿里云 AI 助理回答

在Java中,字符常量可以用几种方式来表示。首先,让我解释一下每个选项的含义和正确性:

(a)char a = '\u0061';:这是正确的声明。\u0061 是 Unicode 转义序列,它代表小写字母 'a'。所以这个语句声明了一个字符变量 a 并赋值为 'a'。

(b)char 'a' = 'a';:这是不正确的语法。字符常量应该用单引号包围,而变量名不能用单引号开始。

(C)char \u0061 = 'a';:这个声明是有效的,但可能引起混淆。这里 \u0061 实际上并不是作为Unicode转义序列被解析的,因为按照Java的规则,转义序列必须直接跟在反斜杠后面且没有空格。然而,由于Java编译器对Unicode转义序列的宽容处理,某些情况下即使有空格也可能被正确解析为'a',但这不是标准做法,容易导致代码可读性和可维护性问题。正确的写法应该是没有空格的 \u0061

(d)ch\u0061r a = 'a';:这是正确的声明。虽然看起来有些奇怪,但实际上是合法的。\u0061 在这里是一个有效的Unicode转义序列,代表字符 'a'。所以 ch\u0061r 实际上是 char。然后声明了一个字符变量 a 并赋值为 'a'。

(e)ch'a'r a = 'a';:这是不正确的声明。变量类型不能这样分隔,单引号应该用来包围字符常量而不是类型名称的一部分。

关于选项(c)和(d)的解释: - 选项(c)虽然在技术上可能在某些Java编译器版本中被接受并正确解析,但其格式并不标准,易造成混淆。标准实践是不包含空格地使用Unicode转义。 - 选项(d)展示了Unicode转义序列可以用于任何地方,包括类型名中的字母,这使得它可以作为一种技巧来创建看似特殊但实际上符合语法的标识符。这种写法虽然合法,但在实际编程中非常少见,且降低了代码的可读性。

总结来说,尽管(c)在特定环境下可能工作,但建议避免使用,以遵循最佳编码实践。而(d)展示了语言的一个有趣特性,但通常不会在实际代码中这样使用。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答