【问题标题】:String Array Assignment in Java [duplicate]Java中的字符串数组赋值[重复]
【发布时间】:2019-02-27 18:40:24
【问题描述】:

代码:

String Foo[];
Foo={"foo","Foo"};

第 2 行错误:表达式开头非法
如果我说代码有效:

String Foo[]={"foo","Foo"};

为什么会发生这种情况,我应该如何在不产生错误的情况下执行所需的操作?其他数据类型也会发生这种情况。

如果您能用外行术语进行解释,将不胜感激。

【问题讨论】:

  • 编译器希望你指定{"foo", ...} 是一个数组,所以使用new String[]{"foo", ...}。除此之外,帮自己一个忙,让变量名以小写字符开头,即String foo 而不是String Foo(我个人喜欢在类型上声明数组,即String[] foo)。
  • InitializationAssignment 这两个词很重要。我相信。 :)
  • 仅供参考:或者,对于不可修改的列表而不是简单的数组,List<String> list = List.of( "foo" , "bar" ) ; 作为单行或两行。
  • 通常你必须使用new String[] { ...}(这在Java的早期版本中总是必须的),但是,作为语法糖,编译器在字段声明或变量声明中只接受{ ... } .为什么?在Java Language Specification 中指定了这种方式(可能是 messy 到处接受它)

标签: java arrays variable-assignment


【解决方案1】:

{"foo","Foo"} 是一个数组初始化器,它不是一个完整的array creation expression

数组初始化器可以在声明中指定(§8.3、§9.3、§14.4),或作为数组创建表达式的一部分(§15.10),创建一个数组并提供一些初始值。

Java Specification

请改用new String[] {"foo","Foo"}

【讨论】:

【解决方案2】:

你必须初始化字符串数组:

String foo[] = new String[]{"foo, "Foo"}; Or 
String foo[] = {"foo, "Foo"};

现代 IDE 会因未初始化数组对象而出错。您可以在此处参考更多详细信息: http://grails.asia/java-string-array-declaration

【讨论】:

    猜你喜欢
    • 2014-06-10
    • 2020-07-31
    • 2017-09-27
    • 2012-05-24
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    相关资源
    最近更新 更多