[java] Java : String []을 초기화하는 방법?

오류

% 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"});