자바 문자열 배열
Java 문자열 배열은 고정된 수의 문자열을 보유하는 데 사용됩니다. java 기본 메서드 인수는 문자열 배열 - public static void main(String[] args)
입니다. 그래서 오늘 우리는 예제 프로그램과 함께 자바 문자열 배열의 다양한 측면을 살펴볼 것입니다.
- 자바 문자열 배열은 기본적으로 객체 배열입니다.
- 문자열 배열을 선언하는 방법에는 크기가 없는 선언과 크기가 있는 선언의 두 가지가 있습니다.
- 문자열 배열을 초기화하는 두 가지 방법이 있습니다. 선언 시점에 선언 후 값을 채우는 것입니다.
- 반복, 정렬, 검색 등과 같은 문자열 배열에 대해 다양한 종류의 처리를 수행할 수 있습니다.
이제 자바 문자열 배열 예제 프로그램을 살펴보겠습니다.
Java 문자열 배열 선언
아래 코드 스니펫은 자바에서 문자열 배열 선언을 위한 다양한 방법을 보여줍니다.
String[] strArray; //declare without size
String[] strArray1 = new String[3]; //declare with size
문자열 배열을 String strArray[]
로 작성할 수도 있지만 위의 방법이 표준 및 권장 방법임을 보여줍니다. 또한 위의 코드에서 strArray
는 null
인 반면 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 문서