[Java] String 문자열을 쪼개서 배열에 넣는 방법 ( String char[] 변환 총정리 :: charAt(), toCharArray() 등)
C언어로 개발된 시스템을 자바로 변환하는 작업을 하다보니 평소에 자주 안쓰던 메소드들을 사용하게된다.
String를 char 타입으로 변환 바꾸기
charAt(index) 사용법
index값은 0부터 시작이다.
String input = “안녕”;
char c = input.charAt(0);
System.out.println(c);
결과값 : 안
for문으로 출력하는 예제
String input = “안녕! 반가워”;
for(int i=0; i<input.length(); i++) {
System.out.println(input.charAt(i));
}
toCharArray() 사용법
String input = “안녕하세요”;
char[] arrCh = input.toCharArray();
for(char c : arrCh) {
System.out.println(c);
}
※주의할 점
특수문자, 공백도 인덱스에 포함된다.
String input = “안녕 반가워”;
char c = input.charAt(2);
결과 : (공백)
문자열로 변환시 String.valueOf() 사용할것
toString()사용하여 문자열로 변환하면 전혀 다른값이 리턴된다.
char c = ‘a’;
String str = String.valueOf(c);
char[] arrCh = {‘a’, ‘b’, ‘c’ };
String str = String.valueOf(arrCh);
System.out.println(str);
결과 : abc (type : String)
char c = ‘a’;
String str = Character.toString(c);
결과 : a (type : String)
※ 주의할 점:
Character.toString() 사용 시 char [] 배열은 변환이 불가능
+”” 사용법
char c = ‘a’;
String str = ch + “”;
결과 : a (type : String)
실행 속도 비교
valueOf() vs “”
public class testExec {
public static void main(String[]) {
char ch = 'a';
long startNanoTime = System.nanoTime();
int i = 1000000000;
while(i --> 0) {
String str = String.valueOf(ch);
String str = ch+"";
}
long secDiffTime = (System.nanoTime() - startNanoTime) / 1000000000;
System.out.println(secDiffTime);
}
}
valueOf() 속도
일반 결과 : 0초
배열 결과 : 5초
“” 속도
일반 결과 : 20초
배열 결과 : 74초