Programming Language/Java

[Java] Char형 배열과 String 클래스

개발왕 금골드 2020. 7. 3. 11:34
반응형

안녕하세요 골드입니다.

 오늘은 Char형 배열과 String 클래스에 관계에 대해서 글을 작성하겠습니다.

알고리즘을 풀다 보면 char형 배열을 String으로 혹은 그 반대에 경우로 형변환을 하는 경우가 굉장히 많습니다. 꼭 알고리즘 문제가 아니더라도 이런 형변환을 하는 경우가 종종 생길 수 있으니 꼭 알아두시면 좋겠습니다.

 

1. char[] -> String 형변환

char[]은 char형 배열입니다. 이 배열의 요소값들은 모두 char형 변수입니다. 

 

 

 char형 변수는 '' 작은 따옴표 안에 있는 값입니다. String으로 형변환 하기 위해서 String 클래스에 매개변수로 char형 배열을 넣어서 새로운 인스턴스를 생성하면 형변환이 완료됩니다. 이게 가능한 이유는 String 클래스가 내부적으로 char[]형을 업그레이드해서 만들어졌기 떄문입니다. 흔히 이야기하는 기본형 변수들 int, char, byte 등이 있다면, String은 기본형이 아니라 자바에서 제공해주는 클래스입니다. 여러분이 흔히 만들어서 사용하는 클래스처럼 new 연산자와 함께 사용하는 것이 원칙이지만 굉장히 많이 사용하는 클래스이기 때문에 자바에서 new연산자를 사용하지 않아도 생성할 수 있게 만들어준 것입니다.

 

 char형 배열은 toString() 메서드가 있기는 하지만 해당 메서드는 배열을 String 클래스로 형변환하는 메서드가 아니라 해시코드를 가져오는 메서드입니다. System.out.println()으로 출력해보면 원하는 값이 아닌 다른 값이 출력되는 것을 볼 수 있습니다.

 

char형 배열의 toString()

 

 

2. String -> char[] 형변환

 

 

 상당히 많이 사용하는 형변환이기 때문에 String 클래스에 toCharArray()라는 메서드를 사용하면 쉽게 형변환이 가능합니다. 

 

3. String 클래스의 메서드

char[] toCharArray()

문자열(String)을 char[]로 변환.

char charAt(int index)

문자열에서 특정 위치(index)에 있는 값을 반환.

int length()

문자열의 길이를 반환.

boolean equals(String str)

문자열의 내용이 같은지 확인.

String subString(int from, int to)

문자열의 해당 범위(from ~ to)에 내용을 반환(to는 포함되지 않음).

만약 앞서 변환한 char형 배열의 요소들을 하나씩 출력하고 싶다면 두 가지 방법을 사용할 수 있습니다.

첫 번째 방법은 변환된 char형 배열의 요소를 하나씩 출력하는 방법이 있고,

두 번째 방법은 String 클래스의 charAt(int index)를 사용해서 출력할 수 있습니다.

 

 

 

4. char형 변수 비교

 그럼 이제 마지막으로 char형 변수값을 서로 비교하는 방법을 알아보겠습니다. 문자열을 char형 배열에 담고 그 값을 if문으로 비교하거나 하는 문제가 종종 있기 때문입니다.

 char형은 int와 마찬가지로 비교연산자(==)로 비교가 가능합니다. 혹은 Character 클래스의 compare()를 사용할 수도 있습니다.

 

 

 Character.compare() 메서드의 경우 두 매개변수의 값을 빼는 연산을 합니다. 그렇기 때문에 0이면 같은 값이라는 뜻이고 0이 아니면 다른 값이라는 뜻입니다.

 보시면 아시겠지만 Character.compare()의 글씨가 흐리게 표시됩니다. 그 이유는 개발 툴도 이 방법을 추천하지 않는다는 뜻입니다. 개발 툴을 이용해서 흐릿한 부분을 고치면 위와 마찬가지로 tmp[i] == 'a'로 바뀌게 됩니다.

 

여기까지 char[] <-> String 형변환에 대해 알아보았습니다.

알고리즘 문제를 풀 때 뿐만 아니라, 꽤 많이 사용하는 형변환이기 때문에 알고 있으면 도움이 될 것입니다.

 

추가로 int <-> String 형변환도 제 블로그에 작성되어 있습니다.

https://kumgo1d.tistory.com/37

 

[Java] Integer(or int, long) to String(String to int) 자료형 변환과 String Split

안녕하세요 골드입니다. 오늘은 Java 언어로 Integer 변수를 String으로 변환하는 방법(과 그 반대 경우) 그리고 문자열을 나누는 메소드에 대해서 살펴보겠습니다. 프로그래밍을 배우다 보면 '그래��

kumgo1d.tistory.com

 

여기까지 골드였습니다.

감사합니다.

 

참고자료 : Java api

반응형