从Java语言的定义,ABCD都是错误的,4个都不是正确的字符常量。可以查阅《JLS8》中的描述:
A character literal is expressed as a character or an escape
sequence,enclosed in ASCII single
quotes.一个字符常量表示为一个字符或一个转义序列,被一对ASCII单引号关闭。
lldzjy:
' SingleCharacter '
' EscapeSequence '
SingleCharacter:
InputCharacter but not ' or
而转义序列包括:
EscapeSequence:
b (backspace BS, Unicode u0008)
t (horizontal tab HT, Unicode u0009)
n (linefeed LF, Unicode u000a)
f (form feed FF, Unicode u000c)
r (carriage return CR, Unicode u000d)
" (double quote ", Unicode u0022)
' (single quote ', Unicode u0027)
(backslash , Unicode u005c)
OctalEscape (octal value, Unicode u0000 to u00ff)
...
四个答案都采用的是双引号关闭,所以是字符串常量而不是字符常量。
忽略这个错误,那么这题就没有答案,因为无论是采用特殊字符的转移序列'n'还是采用八进制转义'101',都是满足Java语言规范中规定的字符常量格式。