11

如何通过调用 args 构造函数来创建数组?

StringBuilder[] sb=new StringBuilder[100];

但是如果我检查 sb[0] 它是空的。我希望 sb[0] 到 sb[99] 用“”初始化。

以下导致错误:

StringBuilder[] sb=new StringBuilder[100]("");

编辑: 或者我必须这样做:

for(StringBuilder it:sb)
{
  it=new StringBuilder("");
}
4

6 回答 6

18

您的所有代码将做的就是初始化一个为 100 个 StringBuilders 准备好的数组。它实际上不会填充它。

你可以这样做:

StringBuilder[] sb=new StringBuilder[100];

for (int i = 0; i < sb.length; i++) {
    sb[i] = new StringBuilder("");
}

那应该为你做。

于 2013-03-20T10:21:12.087 回答
3

它将永远是null。如果你想""在那里,你必须手动初始化它。

相反,您可以通过一个方法访问数组,""如果值为null.

于 2013-03-20T10:17:46.737 回答
2
StringBuilder[] sb = new StringBuilder[100];
for(int i=0;i<100;i++) {
    sb[i] = new StringBuilder("");
}
于 2013-03-20T10:20:02.467 回答
2

null除非设置了任何数组中的所有值...您需要手动初始化每个值

StringBuilder[] sb=new StringBuilder[100];
for(int i=0; i<sb.length; i++) {
    sb[i]=new StringBuilder();
}

或者...

StringBuilder[] sb=new StringBuilder[]{new StringBuilder(), new StringBuilder(), etc}

(我推荐第一种方法用于包含大量条目的数组)

于 2013-03-20T10:23:38.327 回答
0

Java 中引用传递的有趣应用。

请注意,以下将起作用 -

StringBuilder[] array = new StringBuilder[10];
for (int i= 0; i < 10; i++) {
    array [i] = new StringBuilder("");
}

但以下将不起作用 -

StringBuilder[] array = new StringBuilder[10];
for (StringBuilder sb: array) {
    sb = new StringBuilder("");
}

这是因为在第二种情况下,变量sb被分配了对新 StringBuilder 的引用,而不是引用数组的元素。数组元素不会改变,因为sb失去了对它们的引用。

于 2021-03-11T08:02:34.143 回答
0

任何数组中的所有值都是空的,除非它们被设置......您需要手动初始化每个值

StringBuilder[] sb=new StringBuilder[100];
for(int i=0; i<sb.length; i++) {
    sb[i]=new StringBuilder();
}
于 2021-03-11T08:07:53.670 回答