从Java语言的定义,ABCD都是错误的,4个都不是正确的字符常量。可以查阅《JLS8》中的描述:
A character literal is expressed as a character or an escape sequence,enclosed in ASCII single quotes.一个字符常量表示为一个字符或一个转义序列,被一对ASCII单引号关闭。
CharacterLiteral: ' 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) ...
四个答案都采用的是双引号关闭,所以是字符串常量而不是字符常量。
忽略这个错误,那么这题就没有答案,因为无论是采用特殊字符的转移序列' '还是采用八进制转义'101',都是满足Java语言规范中规定的字符常量格式。