본문 바로가기

JAVA의 정석

타입간의 변환방법

1. 문자열을 문자로 변환하는 법

 

우선 문자열 str 에 "3" 이라는 문자열을 저장해두자.

 

그 후 charAt(0)을 이용하여, str을 문자열이 아닌 문자로 출력해보자. 

 

 

문자열 "3" 이 문자 '3'이 되었지만 , 가시적으로 문자열이 문자로 바뀌었는지는 알 수 없으니 char타입의 변수를 만들어 저장해본다면

 

charAt이 제대로 작동되었는지 확인할 수 있을 것이다. 그럼 이 과정을 통해 char 타입으로 바뀌었는지 확인해보자 .

 

 

 

 

char 타입으로 컴파일 오류없이 저장되는 것을 보니, str.charAt(0) 이라는 메소드에서 성공적으로 char 타입의 리터럴을 리턴했다는 것을

 

확인할 수 있다. 

 

지금까지는  하나의 문자열만 문자로 변환해 보았다.  그렇다면 두 개 이상의 문자열 중 골라서 문자로 바꾸고 싶다면 어떻게 해야할까 ?

 

chrAt(0) 에 9의 의미를 한 번 더 생각해보면 알 수 있다. 여기서 0은 0번째 문자를 가르킨다. 즉 괄호안 숫자가 1,2,3,4 이렇게 바꾸어 대

 

입해본다면  특정 문자열의 자릿수를 가르키는 숫자로 그 숫자의 저장 되어있는 문자열을 문자로 바꿀 수 있다

 

 

2. 문자를 문자열로 변환하는 법

 

문자를 문자열로 바꾸려면 어떻게 할까? 

 

지난 장에서 정수와 실수 타입의 변수들을 출력과 동시에 ""을 통해서 문자열로 변환하는 법을 통해 배워왔다.

 

문자든, 숫자든 문자열로 변환하려면 "" (큰 따옴표)을 통해서 변환할 수 있다는 것을 우리는 이제 알아야만 한다.

 

출력함과 동시에 문자를 문자열로 바꾸는 방법도 있겠지만, 이번 장에서 는 새로운 문자열타입의 변수를 선언한 뒤 그 타입의 저장한 후 출력

 

을 하려 한다. (컴파일 오류 및, 가시적인  변환 확인을 위해서)

 

 

가시적으로 문자가 문자열로 표현되었는지 알 수는 없다 . 하지만 정상적으로 컴파일 및 출력됨을 통해 문자가 문자열로 성공적으로 변환되었다는 것을 알 수 있다. 

 

3. 숫자를 문자로 변환

 

저번 장에서 숫자를 문자열로 문자를 숫자열로 다루었다면, 숫자를 문자로 문자를 숫자로 변환하는 법 또한 궁금함을 가질 수 있다.

 

어떻게 해야 숫자를 문자로 변환할 수 있을까 ?  

 

방법은 다음과 같다. 

 

 

위 화면 처럼 문자열 '3'에서 '0'을 빼주었더니 num이라는 int형 변수에 성공적으로 3이 저장되었고, 이를 증명하듯 출력과정에서 -1 을 해

 

주니 숫자 2가 출력되었다.  문자가 숫자로 바뀐 모습을 2번 씩이나 성공적으로 증명한셈이다. 그렇다면 문자를 숫자로 바꾸는 방법은 어떨

 

까 ? -'0' 을 해주었 듯, + '0' 을 해주면 되는 것일까 ? 

 

 

4. 문자를 숫자로 변환

 

 

문자를 숫자로 만들었던 역순으로 숫자를 문자로 만들어 출력하려 하였더니 뜬금 없는 51이라는 숫자가 나왔다.

 

이유가 무엇일까? 

 

'0' 은 숫자 48을 의미한다 그렇기 때문에 num에 저장되어 있던 3과 더해질 경우 51이 출력된 것이다. 

 

 

 

이럴 경우 형변환을 통해서 정상적으로 숫자를 문자로 바꿀 수 있다. 문자를 숫자로 바꿀 때에는 단순히 '0' 만 빼주면 되었지만,

 

숫자를 문자로 바꾸는 방법은 무언가 복잡하다. 왜 그럴까 ?

 

문자열과 달리 자바에서 문자와 숫자의 합은 숫자로 나온다. 그렇기 때문에 3과 , '0'의 아스키 값인 48 이 더해져서 출력되어 나온 것이다. 

 

만약 여기서 위 출력화면 처럼 문자 '3'을 출력하고 싶다면 숫자 3과 '0'을 더한 값 51에 char을 붙여주면 51의 아스키 코드 값인 '3'인 출력

 

된다. 

 

문자열과 숫자의 합은 문자열이 되고, 문자와 숫자의 합은 숫자가 되고, 문자열과 문자의 합은 문자열이 되는 관계를 까먹지 않는다면 

 

앞으로 코드를 작성하는데 헷갈리지 않을 것이다.