Java:如何初始化字符串[]?

错误

% javac  StringTest.java
StringTest.java:4: variable errorSoon might not have been initialized
errorSoon[0] = "Error, why?";

代码

public class StringTest {
public static void main(String[] args) {
String[] errorSoon;
errorSoon[0] = "Error, why?";
}
}
958602 次浏览

你需要初始化 errorSoon,正如错误消息所示,你只有宣布它。

String[] errorSoon;                   // <--declared statement
String[] errorSoon = new String[100]; // <--initialized statement

你需要初始化数组,这样它才能为String元素分配正确的内存存储空间。

如果你只有声明数组(就像你所做的那样),就没有分配给String元素的内存,而只有errorSoon的引用句柄,并且当你试图在任何索引处初始化变量时将抛出一个错误。

顺便说一句,你也可以在括号内初始化String数组,{ }如下:

String[] errorSoon = {"Hello", "World"};

这相当于

String[] errorSoon = new String[2];
errorSoon[0] = "Hello";
errorSoon[1] = "World";
String[] errorSoon = new String[n];

n是它需要容纳的字符串数。

你可以在声明中这样做,或者在以后不使用String[]的情况下这样做,只要是在你尝试使用它们之前。

String[] errorSoon = { "foo", "bar" };

——或——

String[] errorSoon = new String[2];
errorSoon[0] = "foo";
errorSoon[1] = "bar";
String[] args = new String[]{"firstarg", "secondarg", "thirdarg"};

你可以这样写

String[] errorSoon = {"Hello","World"};


For (int x=0;x<errorSoon.length;x++) // in this way u create a for     loop that would like display the elements which are inside the array     errorSoon.oh errorSoon.length is the same as errorSoon<2


{
System.out.println(" "+errorSoon[x]); // this will output those two     words, at the top hello and world at the bottom of hello.
}

我相信你刚刚从c++迁移过来,在java中,你必须初始化一个数据类型(除了原始类型和字符串在java中不被认为是原始类型)来根据它们的规范使用它们,如果你不这样做,那么它就像一个空引用变量(很像c++上下文中的指针)。

public class StringTest {
public static void main(String[] args) {
String[] errorSoon = new String[100];
errorSoon[0] = "Error, why?";
//another approach would be direct initialization
String[] errorsoon = {"Error , why?"};
}
}

字符串声明:

String str;

字符串初始化

String[] str=new String[3];//if we give string[2] will get Exception insted
str[0]="Tej";
str[1]="Good";
str[2]="Girl";


String str="SSN";

我们可以在String中获取单个字符:

char chr=str.charAt(0);`//output will be S`

如果我想像这样获取单个字符的Ascii值:

System.out.println((int)chr); //output:83

现在我想转换Ascii值为字符/符号。

int n=(int)chr;
System.out.println((char)n);//output:S
String[] string=new String[60];
System.out.println(string.length);

对于初学者来说,这是初始化和获取STRING LENGTH代码的非常简单的方式

Java 8中,我们还可以使用流。

String[] strings = Stream.of("First", "Second", "Third").toArray(String[]::new);

如果我们已经有一个字符串列表(stringList),那么我们可以收集到字符串数组为:

String[] strings = stringList.stream().toArray(String[]::new);

您可以使用下面的代码初始化大小并将空值设置为字符串数组

String[] row = new String[size];
Arrays.fill(row, "");
String[] arr = {"foo", "bar"};

如果你将一个字符串数组传递给一个方法,执行以下操作:

myFunc(arr);

或做的事:

myFunc(new String[] {"foo", "bar"});