【问题标题】:Declare and initialize an array in Java [duplicate]在Java中声明和初始化一个数组[重复]
【发布时间】:2013-01-05 17:05:01
【问题描述】:

可能重复:
Can I declare and initialize an array with the same instruction in Java?

如何在Java中声明一个数组,同时初始化它的一些已知元素? 首先这个方法声明但不初始化元素:

public static someClass myArray[] = new someClass[10]; // all values are null,

现在想象我知道第​​一个元素的值但不知道其他元素的值,这是在一些逻辑之后我为它们分配值 第二个建议是:

public static someClass[] myArray = {new someClass(),null,null};

所以这条指令有效,但对 200 个元素的数组做同样的事情是不切实际的

【问题讨论】:

  • 初始化它的第一个值到底是什么意思?
  • 提供初始化它的值。
  • 重新编辑;什么是不好的解决方案?您也可以只初始化静态块或代码中的第一个元素,或者...
  • 为什么严重否决这个问题,

标签: java arrays null initialization declaration


【解决方案1】:
public static String st[] = new String[]{"foo", "bar"};

【讨论】:

  • 你能解释一下为什么这是正确答案吗?
【解决方案2】:

在静态块中初始化它,当然:

static {
   str st[] = new str[10];
   for (int i = 0; i < st.length; ++i) {
     st[i] = new str();
   }
}

其他人都假设您的str 表示java.lang.String。我不是。

我会指出您的命名和编码约定相当糟糕。我建议遵循 Java 编码标准,并更加努力地为事物考虑好名字。

【讨论】:

  • 你也可以static str[] strs = { new str(), new str()... } :) 但是 +1 表示不要做出愚蠢的假设。
  • (如果它是一个大数组,OTOH,显然该块可能更合适。)
  • 好的,这个静态块肯定有帮助,谢谢大家!
【解决方案3】:

尝试以下方法:

public static String st[] = {"a","b","c"};

【讨论】:

  • 以这种方式声明和像这样声明有什么区别 public static String st[] = new String[] {"a","b","c"};
【解决方案4】:

你是说

public static String st[] = new String[] { "a", "b", "c" };

【讨论】:

  • (当然,如果真的是String,你可以用public static String st[] = { "ohai", "kthxbai" };
【解决方案5】:
 public static String st[] = {"firstValue",null,null,null}

public static String st[] = {"firstValue","second","third","fourth"}

【讨论】:

  • 如何使用@duffymo上述答案中的静态块
  • 很难写很多空值?当我们有一个大小等于 100 的数组时
  • @user1951298 你不必写很多空值,使用静态块或代码来初始化第一个元素。
  • 为什么不能这样用,st[0] = "firstValue";
猜你喜欢
  • 1970-01-01
  • 2016-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多