[Java] String < - > char 변환 총 정리
1.String to char (String -> char)
1-1.charAt() 이용하기
문법
String input = "안녕하세요";
char c = input.charAt(인덱스);
실전 예시
String krstr = "안녕하세요";
char c = krstr.charAt(0);
System.out.println(c);
결과 : 안
실전 예시 2
String enstr = "abcdef";
char c = enstr.charAt(3);
System.out.println(c);
결과 : d
실전 예시 3 - for문을 이용하여 하나 씩 반복하며 뽑기
String input = "자바킹";
for(int i=0; i<input.length(); i++) {
System.out.println(input.charAt(i));}
결과 : 자
바
킹
처음부터 char형으로 쪼개서 넣을 순 없을까?
1-2.toCharArray() 이용하기
문법
String input = "안녕하세요";
char[] arrCh = input.toCharArray();
실전 예시 - 개선된 for문을 이용하여 하나 씩 반복하며 뽑기
String input = "안녕하세요";
char[] arrCh = input.toCharArray();
for(char c : arrCh) {
System.out.println(c);}
※ 공통 주의할 점
1.특수문자, 공백도 인덱스에 포함된다는 점
예시 :
String input = "안녕 하세요";
char c = input.charAt(2);
결과 : (공백)
2. 인덱스가 0부터 시작한다는 점
예시 :
String input = "안녕하세요";
char c = input.charAt(0);
결과 : 안
2.char to String (char -> String)
2-1.valueOf() 이용하기
문법
char c = 'a';
String str = String.valueOf(c);
System.out.println(str);
결과 : a (type : String)
실전 예시 - char [] array to String
char[] arrCh = {'a', 'b', 'c' };
String str = String.valueOf(arrCh);
System.out.println(str);
결과 : abc (type : String)
2-2.toString() 이용하기
문법
char c = 'a';
String str = Character.toString(c);
결과 : a (type : String)
※ 주의할 점: Character.toString() 사용 시 char [] 배열은 변환이 불가능합니다.
char c = 'a'
char[] arrCh = {'a', 'b', 'c' };
Character.toString(c) O
Character.toString(arrCh) X
2-3."" 이용하기 (야매식 변환)
문법
char c = 'a';
String str = ch + "";
결과 : a (type : String)
마지막으로..
[2-3."" 이용하기] 방법이 가장 편해서 저도 많이 쓰고 있는데요.
실행 속도는 어떨까요? 한번 비교해봤습니다.
[2-1.valueOf()] vs [2-3."" 이용하기]
실행 속도 비교 코드
public class Ex006 {
public static void main(String[] args) throws NumberFormatException, IOException {
char ch = 'a';
long startNanoTime = System.nanoTime();
int i = 1000000000;
while(i --> 0) {
String str = String.valueOf(ch); //2-1
String str = ch+""; //2-3
//하나씩 넣고 컴파일을 진행하였습니다.
}
long secDiffTime = (System.nanoTime() - startNanoTime) / 1000000000;
System.out.println(secDiffTime);
}
}
[2-1.valueOf()] 속도
일반 결과 : 0초
배열 결과 : 5초
[2-3."" 이용하기] 속도
일반 결과 : 20초
배열 결과 : 74초
간단한 코드에 이런 차이면 좀 더 복잡할수록 많이 차이 날 거 같습니다.
되도록이면 valueOf()를 사용하시는 걸 추천드립니다.