반응형

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()를 사용하시는 걸 추천드립니다.

 

 

 

반응형
  1. 곰탱 2021.07.07 21:21

    감사합니다

+ Recent posts