hhh*_*hhh 192 java string initialization
错误
% javac StringTest.java
StringTest.java:4: variable errorSoon might not have been initialized
errorSoon[0] = "Error, why?";
Run Code Online (Sandbox Code Playgroud)
码
public class StringTest {
public static void main(String[] args) {
String[] errorSoon;
errorSoon[0] = "Error, why?";
}
}
Run Code Online (Sandbox Code Playgroud)
Ant*_*ney 311
您需要初始化 errorSoon,如错误消息所示,您只是声明它.
String[] errorSoon; // <--declared statement
String[] errorSoon = new String[100]; // <--initialized statement
Run Code Online (Sandbox Code Playgroud)
您需要初始化数组,以便在开始设置索引之前为String元素分配正确的内存存储.
如果你只声明数组(就像你所做的那样)没有为String元素分配内存,只有一个引用句柄errorSoon,当你尝试在任何索引处初始化一个变量时会抛出一个错误.
作为旁注,您还可以String在大括号内初始化数组,{ }因此,
String[] errorSoon = {"Hello", "World"};
Run Code Online (Sandbox Code Playgroud)
这相当于
String[] errorSoon = new String[2];
errorSoon[0] = "Hello";
errorSoon[1] = "World";
Run Code Online (Sandbox Code Playgroud)
Yau*_*hen 123
String[] args = new String[]{"firstarg", "secondarg", "thirdarg"};
Run Code Online (Sandbox Code Playgroud)
Tay*_*ese 25
String[] errorSoon = { "foo", "bar" };
Run Code Online (Sandbox Code Playgroud)
- 要么 -
String[] errorSoon = new String[2];
errorSoon[0] = "foo";
errorSoon[1] = "bar";
Run Code Online (Sandbox Code Playgroud)
i_a*_*ero 10
在Java 8中,我们也可以使用流,例如
String[] strings = Stream.of("First", "Second", "Third").toArray(String[]::new);
Run Code Online (Sandbox Code Playgroud)
如果我们已经有一个strings(stringList)列表,那么我们可以收集到字符串数组中:
String[] strings = stringList.stream().toArray(String[]::new);
Run Code Online (Sandbox Code Playgroud)
我相信你刚刚从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?"};
}
}
Run Code Online (Sandbox Code Playgroud)
String[] arr = {"foo", "bar"};
Run Code Online (Sandbox Code Playgroud)
如果将字符串数组传递给方法,请执行以下操作:
myFunc(arr);
Run Code Online (Sandbox Code Playgroud)
或者做:
myFunc(new String[] {"foo", "bar"});
Run Code Online (Sandbox Code Playgroud)
String[] errorSoon = new String[n];
Run Code Online (Sandbox Code Playgroud)
n是需要保持多少个字符串.
您可以在声明中执行此操作,或者稍后在没有String []的情况下执行此操作,只要它在您尝试使用它们之前.