웹사이트 검색

자바 문자열 배열


Java 문자열 배열은 고정된 수의 문자열을 보유하는 데 사용됩니다. java 기본 메서드 인수는 문자열 배열 - public static void main(String[] args)입니다. 그래서 오늘 우리는 예제 프로그램과 함께 자바 문자열 배열의 다양한 측면을 살펴볼 것입니다.

  • 자바 문자열 배열은 기본적으로 객체 배열입니다.
  • 문자열 배열을 선언하는 방법에는 크기가 없는 선언과 크기가 있는 선언의 두 가지가 있습니다.
  • 문자열 배열을 초기화하는 두 가지 방법이 있습니다. 선언 시점에 선언 후 값을 채우는 것입니다.
  • 반복, 정렬, 검색 등과 같은 문자열 배열에 대해 다양한 종류의 처리를 수행할 수 있습니다.

이제 자바 문자열 배열 예제 프로그램을 살펴보겠습니다.

Java 문자열 배열 선언

아래 코드 스니펫은 자바에서 문자열 배열 선언을 위한 다양한 방법을 보여줍니다.

String[] strArray; //declare without size

String[] strArray1 = new String[3]; //declare with size

문자열 배열을 String strArray[]로 작성할 수도 있지만 위의 방법이 표준 및 권장 방법임을 보여줍니다. 또한 위의 코드에서 strArraynull인 반면 strArray1 값은 [null, null, null]입니다.

Java 문자열 배열 초기화

Java에서 문자열 배열을 초기화하는 다양한 방법을 살펴보겠습니다.

//inline initialization
String[] strArray1 = new String[] {"A","B","C"};
String[] strArray2 = {"A","B","C"}; 

//initialization after declaration
String[] strArray3 = new String[3];
strArray3[0] = "A";
strArray3[1] = "B";
strArray3[2] = "C";

세 문자열 배열은 모두 동일한 값을 갖습니다. 그러나 equals 메서드를 호출하면 false를 반환합니다.

System.out.println(strArray1.equals(strArray2)); // false
System.out.println(Arrays.toString(strArray1).equals(Arrays.toString(strArray2)));// true

그 이유는 배열이 객체이고 객체 클래스는 아래와 같이 equals() 메서드를 구현하기 때문입니다.

public boolean equals(Object obj) {
        return (this == obj);
    }

두 번째 문장은 문자열로 변환될 때 해당 값이 동일하고 문자열 클래스 equals() 메서드 구현이 값을 확인하기 때문에 참입니다. 자세한 내용은 String 클래스 API 문서를 확인하세요.

Java 문자열 배열 반복

Java foreach 루프를 사용하여 문자열 배열을 반복할 수 있습니다.

String[] strArray2 = {"A","B","C"}; 
for (int i = 0; i < strArray2.length; i++) {
	System.out.print(strArray2[i]);
}

for (String str : strArray2) {
	System.out.print(str);
}

문자열 배열에서 문자열 검색

for 루프를 사용하여 배열에서 문자열을 검색할 수 있습니다. 아래는 이에 대한 간단한 예입니다.

package com.journaldev.stringarray;

public class JavaStringArrayExample {

	public static void main(String[] args) {
		String[] strArray = { "A", "B", "C" };
		
		boolean found = false;
		int index = 0;
		String s = "B";
		for (int i = 0; i < strArray.length; i++) {
			if(s.equals(strArray[i])) {
				index = i; found = true; break;
			}
		}
		if(found)
			System.out.println(s +" found at index "+index);
		else
			System.out.println(s +" not found in the array");
		
	}

}

문자열을 찾자마자 루프에서 벗어나기 위해 break 키워드를 사용하는 것에 주목하십시오.

Java 문자열 배열 정렬

자체 정렬 알고리즘을 구현하거나 Arrays 클래스 정렬 방법을 사용할 수 있습니다.

String[] vowels = {"a","i","u","e","o"};
		
System.out.println("Before sorting "+Arrays.toString(vowels));

Arrays.sort(vowels);
		
System.out.println("After sorting "+Arrays.toString(vowels));

위 코드 조각의 출력은 다음과 같습니다.

Before sorting [a, i, u, e, o]
After sorting [a, e, i, o, u]

String은 Comparable 인터페이스를 구현하므로 자연스러운 정렬을 위해 작동합니다. 다른 방법으로 정렬하려는 경우 Comparator를 전달하여 Arrays.sort() 오버로드된 메서드를 사용할 수 있습니다. java의 Comparable 및 Comparator에서 이러한 정렬 기술에 대해 알아보세요.

문자열을 문자열 배열로 변환

split() 메서드를 사용하여 문자열을 문자열 배열로 변환할 수 있습니다. 구분 문자를 사용하여 구분된 값이 있는 단일 문자열을 입력으로 가져올 때 유용합니다.

String str = "a,e,i,o,u";
String[] vowels = str.split(",");
System.out.println(Arrays.toString(vowels)); //[a, e, i, o, u]

문자열 배열을 문자열로 변환

Arrays.toString() 메서드를 사용하여 문자열 배열을 문자열로 변환할 수 있습니다. 배열은 toString() 메서드를 구현하지 않으므로 배열의 문자열 표현을 얻으려면 배열 클래스에 의존하거나 고유한 사용자 지정 코드를 작성해야 합니다.

String[] vowels = { "a", "e", "i", "o", "u" };
System.out.println(vowels);
System.out.println(Arrays.toString(vowels));

아래와 같이 출력됩니다.

[Ljava.lang.String;@3d04a311
[a, e, i, o, u]

첫 번째 출력은 아래와 같은 Object 클래스 toString() 구현 때문입니다.

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

나열할 Java 문자열 배열

Arrays.toList() 메서드를 사용하여 문자열 배열의 목록 표현을 얻을 수 있습니다. 이 목록은 배열에 의해 지원되며 구조적 수정으로 인해 java.lang.UnsupportedOperationException이 발생합니다.

String[] vowels = { "a", "e", "i", "o", "u", "a", "o" };

List<String> vowelsList = Arrays.asList(vowels);
System.out.println("vowelsList = "+vowelsList);
//vowelsList.add("x"); //java.lang.UnsupportedOperationException

vowelsList.set(0, "x"); //allowed because no structural modification
System.out.println("vowelsList = "+vowelsList);

이것이 자바 문자열 배열의 전부입니다. 참조: 어레이 Oracle 문서