char num = '1';
int tmp = num; //자동 타입 변환
System.out.print(tmp);
char num = '1';
System.out.print((int) num); //강제 타입 변환하여 출력
이렇게 문자 '1'을 자동 타입 변환을 하거나 강제 형 변환을 해서 출력을 하게되면 1이 출력이 되는것이 아니라 49가 출력이되어서 나온다.
위에서 49가 출력된 이유는 '1'은 아스키코드로 49이기 때문이다.
즉, 문자 '1'이 정수로 타입 변환이 될 때 아스키코드 49로 변환된 것이다.
이런 문제는 charAt()메소드를 사용할 때도 나타난다.
String num = "12345";
for(int i = 0; i < num.length(); ++i)
{
int tmp = num.charAt(i);
System.out.print(tmp);
}
이러한 코드를 실행해보면 출력값은 4950515253이 나온다.
'1' -> 49
'2' -> 50
'3' -> 51
'4' -> 52
'5' ->53
우리의 의도대로 문자 하나를 정수로 변환하려면 두 가지 방법이 존재한다.
- 아스키 코드 사용('0'을 빼주기)
- Character.getNumericValue() 메소드 사용
아스키 코드 사용('0'을 빼주기)
문자 '0'의 아스키 코드 값은 48이다.
위 예에서 말한것 처럼 '1'의 아스키코드는 49이므로 '1' - '0'을 하면 정수 1이되는 것이다.
char num = '1';
System.out.print(num - '0');
이렇게 하면 우리가 의도한대로 원하는 정수값이 출력이 된다.
Character.getNumericValue() 메소드 사용
Character 클래스의 getNumericValue() 정적 메소드를 사용하면 이 또한 우리가 의도한대로 원하는 정수값을 얻을 수 있다.
char num = '1';
System.out.print(Character.getNumericValue(num));
이 코드를 실행해보면 정상적으로 1이 출력되는 것을 확인할 수 있다.
'Java Category > Java' 카테고리의 다른 글
[Java] static import (0) | 2024.01.23 |
---|---|
[Java] Arrays.sort(), Collections.sort() Comparator, Comparable (1) | 2024.01.15 |
[Java] next()와 nextLine()의 차이 (0) | 2023.08.22 |
[Java] DB와 연동한 게시판 구현 (0) | 2023.08.21 |
[Java] DB 트랜잭션 처리 (0) | 2023.08.20 |