第一种和第三写法是一样的,初始化为指定值。
第二种写法实际上你的数组并没有初始化,而且数组常量只能在初始化的时候设定。
还有一种写法 String[] book = new String[4] {"西游记","红楼梦","三国演义","水浒传"}; 这种写法也是错误的,当你数组初始化常量的时候是不能指定维度的。
你的第一种写法是静态定义数组,只有在定义时才可以用!就像你第一行写的,是对的,动态定义可以随时,但是得有new 关键字,
你使用book ={"西游记","红楼梦","三国演义","水浒传"}会提示“数组常量仅能用于初始化”,所以会报错,
String[] book;
book =new String[] {"西游记","红楼梦","三国演义","水浒传"};/
这String[] book未指向任何对象,使用new新创建了一个对象,所以可以成功,不知道你懂没懂?
第二种写法 没有申请空间 只是声明了这个数组,第一种是把声明和空间申请融合在一起了,省去了new