基于Java语言规范的String Literal的澄清

ash*_*ish 3 java

它在Java语言规范中提到

字符串文字总是String类型(§4.3.3).行终止符在打开"和结束匹配之前"之后出现是编译时错误.

如§3.4所述,字符CR和LF从不是InputCharacter; 每个被认为构成LineTerminator.

但我可以创建并运行以下语句

 public class StringOperation {
        public static void main(String ...args){
            String first = "\n";
            System.out.println(first);
        }

    }
Run Code Online (Sandbox Code Playgroud)

我没有看到任何错误.感谢所有的见解.

tor*_*omp 7

语法"\n"是行终止符的有效转义表示,而不是实际的行终止符.JLS阻止你做这样的事情:

String alphabet = "abcdefghijklm
   nopqrstuvwxyz";
Run Code Online (Sandbox Code Playgroud)

相反,你必须这样做:

String alphabet = "abcdefghijklm" +
    "nopqrstuvwxyz";
Run Code Online (Sandbox Code Playgroud)