Java/문자열

[Java]Char 배열을 문자열로 변환하는 방법

DevStory 2022. 8. 17.

Char 배열을 문자열로 변환하는 방법

Java에서 String 타입의 변수는 Char 배열로 구성되어 있지만, Char 배열은 String 변수가 아닙니다.

 

문자열 변수는 + 연산자를 사용하여 문자열을 연결할 수 있지만, Char 배열은 + 연산자를 사용하여 문자를 연결할 수 없습니다.

 

따라서, Char 배열을 문자열처럼 사용하기 위해서는 문자열로 변환하는 작업이 필요합니다.

 

이번 포스팅은 Char 배열을 문자열로 변환하는 몇 가지 방법들을 소개합니다.


방법 1. String 생성자

String 생성자에 Char 배열을 전달하는 경우 String 생성자는 Arrays 클래스의 copyOf() 메서드를 호출합니다.

따라서, String 생성자는 문자 배열을 복사하여 새로운 문자열 객체를 생성합니다.

 

다음 예제는 Char 배열을 String 생성자를 사용하여 문자열로 변환합니다.

public static void main(String args[]) {
  char[] charArray = { 'H', 'e', 'l', 'l', 'o' };
  String strValue = new String(charArray);

  System.out.println(strValue);
}

[실행 결과]

Hello

방법 2. StringBuilder 클래스

두 번째 방법으로 StringBuilder 클래스를 사용합니다.

 

Char 배열을 순회하여 각 문자를 StringBuilder 객체에 추가합니다.

 

StringBuilder 객체에 모든 문자를 추가했으면, toString() 메서드를 사용하여 새로운 문자열 객체를 반환하도록 합니다.

public static void main(String args[]) {
  char[] charArray = { 'H', 'e', 'l', 'l', 'o'};

  StringBuilder sb = new StringBuilder();
  for(char ch: charArray) {
    sb.append(ch);
  }

  String strValue = sb.toString();

  System.out.println(strValue);
}

[실행 결과]

Hello

방법 3. String 클래스의 valueOf 메서드

String 클래스의 valueOf() 메서드는 매개변수로 전달된 값을 String 생성자 함수에 전달 후 새로운 문자열 객체를 반환합니다.

 

valueOf() 메서드는 char 배열뿐만 아니라 int, float, double 타입 등 심지어 object 타입의 값을 문자열로 변환합니다.

public static void main(String args[]) {
  char[] charArray = { 'H', 'e', 'l', 'l', 'o'};
  String strValue = String.valueOf(charArray);

  System.out.println(strValue);
}

[실행 결과]

Hello

방법 4. String 클래스의 copyValueOf 메서드

String 클래스의 copyValueOf() 메서드는 매개변수로 전달된 값을 String 생성자 함수에 전달 후 새로운 문자열 객체를 반환합니다.

 

valueOf() 메서드와 동일한 방법으로 동작합니다.

public static void main(String args[]) {
  char[] charArray = { 'H', 'e', 'l', 'l', 'o'};
  String strValue = String.copyValueOf(charArray);

  System.out.println(strValue);
}

[실행 결과]

Hello

valueOf 메서드와 copyValueOf 메서드의 차이점

valueOf() 메서드와 copyValueOf() 메서드의 차이점은 valueOf() 메서드는 위에서 언급했듯이 다양한 타입의 값을 문자열로 변환합니다.

 

copyValueOf() 메서드는 Char 배열 전용으로 만들어진 함수이므로 Char 배열이 아닌 다른 타입의 값을 전달할 수 없습니다.

 

다음 예제처럼 copyValueOf() 메서드에 정수를 전달하면 컴파일 에러가 발생합니다.

public static void main(String args[]) {
  String strValue = String.copyValueOf(123);
  System.out.println(strValue);
}

[에러 내용]

 

그리고 copyValueOf() 메서드는 오버로드된 또 다른 형태가 존재합니다.

public static String copyValueOf(char data[], int offset, int count);

Char 배열의 특정 위치(offset)에서 특정 개수(count)를 문자열로 반환합니다.

 

다음 예제는 Char 배열의 6번째 인덱스부터 4개의 문자를 문자열로 반환합니다.

public static void main(String args[]) {
  char[] charArray = { 'H', 'e', 'l', 'l', 'o',
                       ' ', 'J', 'a', 'v', 'a'};

  String strValue = String.copyValueOf(charArray, 6, 4);

  System.out.println(strValue);
}

[실행 결과]

Java

방법 5. Stream API

Java의 버전이 1.8 이상이라면 Stream 클래스에서 제공하는 다양한 기능을 사용할 수 있습니다.

 

Char 배열을 스트림으로 변환 후 Collectors 클래스의 joining() 메서드를 사용하여 문자열로 변환합니다.

public static void main(String args[]) {
  char[] charArray = { 'H', 'e', 'l', 'l', 'o',
                       ' ', 'J', 'a', 'v', 'a'};

  String strValue = Stream.of(charArray)
                          .map(arr -> new String(arr))
                          .collect(Collectors.joining());

  System.out.println(strValue);
}

[실행 결과]

Hello Java
반응형

댓글