오류
% 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?";
}
}
답변
오류 메시지에 표시된대로 초기화 해야 합니다. 선언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[] args = new String[]{"firstarg", "secondarg", "thirdarg"};
답변
String[] errorSoon = { "foo", "bar" };
-또는-
String[] errorSoon = new String[2];
errorSoon[0] = "foo";
errorSoon[1] = "bar";
답변
나는 당신이 C ++에서 이주했다고 생각합니다. 자바에서는 데이터 유형을 초기화해야합니다 (다른 기본 유형과 문자열은 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?"};
}
}
답변
Java 8 에서는 스트림을 사용할 수도 있습니다.
String[] strings = Stream.of("First", "Second", "Third").toArray(String[]::new);
이미 문자열 목록 ( stringList
) 이있는 경우 다음과 같이 문자열 배열로 수집 할 수 있습니다.
String[] strings = stringList.stream().toArray(String[]::new);
답변
String[] errorSoon = new String[n];
n은 얼마나 많은 문자열을 보유해야합니다.
선언에서이를 수행하거나 나중에 사용하기 전에 String []없이 수행 할 수 있습니다.
답변
String[] arr = {"foo", "bar"};
문자열 배열을 메소드에 전달하는 경우 다음을 수행하십시오.
myFunc(arr);
또는
myFunc(new String[] {"foo", "bar"});