基元或对象初始化数组

Sru*_*lla 0 java string initialization

可以将String对象数组创建为

//可接受的声明和初始化

line 1: String[]s = new String[2];
line 2: String[]s = new String[]{"a","b"};
Run Code Online (Sandbox Code Playgroud)

//在init下面对我来说看起来也不错,但编译错误了

line 3: String[] s = new String[2] { "a", "b" };
Run Code Online (Sandbox Code Playgroud)

1)为什么我不能在第3行指定数组的大小?
2)当我使用第3行创建数组时,是在堆或字符串池中创建的字符串"a"和"b"?

Mar*_*nik 6

  1. 您不能同时初始化数组并指定其大小,这只是多余的.

  2. 所有字符串文字都存储在常量池中,并且在代码运行之前,在类加载时发生.

另请注意,new String[]初始化程序甚至是多余的:

String[] s = {"a","b"};
Run Code Online (Sandbox Code Playgroud)

  • @lordlupine Java 6强制要求冗余这一事实并不是一件好事.这就是钻石操作员被引入的原因. (2认同)