반응형
ASCII code를 활용하여 정수형 데이터를 문자열로 변경 할 수 있다.
정수형 데이터를 char형으로 변환해보기
다음 예제를 보자.
int의 자료형을 바로 chat에 넣으면?
public class intTochar {
public static void main(String[] args) {
int n = 65;
char test = (char) n;
System.out.println(test);
}
}
결과값은 A가 찍힌다.
타입캐스팅을 처리하여 65의 정수 데이터를 처리하니 A가 나왔다.
65, A 아스키코드표의 데이터이다.
구글링에서 아스키코드표를 검색해보면 각 진수별 아스키코드 데이터를 확인 할 수 있다.
10진법 65의 아스키코드가 A이기 때문에 test변수의 값은 A가 나오는 것을 볼 수 있다.
여기서 우리가 원하는 숫자 데이터를 변환하려면 어떻게 하면 될까?
아스키코드값의 '0'에 해당하는 값만큼 더해주고 시작하면 된다.
아스키코드값 더하기
public class intTochar {
public static void main(String[] args) {
int n = 1;
char test = (char) (n + '0');
System.out.println(test);
}
}
아까와의 차이가 있다면 '0'을 더해주는 작업이 추가되었다.
아스키코드의 '0'의 값은 10진수 값 48이다.
실제로 48을 더해주면 어떻게 될까?
public class intTochar {
public static void main(String[] args) {
int n = 1;
char test = (char) (n + 48);
System.out.println(test);
}
}
예상한대로 동일한 값을 얻을 수 있다.
char test = (char) (n + '0'); 이 부분에서 +'0'은 실제로 48을 더해준 값이기 때문이다.
Character.forDigit()
타입캐스팅방식이 아닌 메소드를 통해 형변환도 가능하다.
public class intTochar {
public static void main(String[] args) {
int REDIX = 10; // redix 10은 십진수이고 hexa는 redix 16입니다.
int a = 5 ;
char c = Character.forDigit (a, REDIX);
System.out.println(c);
}
}
10이 넘어가면?
10이 넘어가면 어떻게 될까?
public class intTochar {
public static void main(String[] args) {
int n = 10;
char test = (char) (n + '0');
System.out.println(test);
}
}
아스키코드표를 계속 언급하였으니, 눈치채신분들은 이미 알고 있었겠지만 당연히 10부터는 나오지 않는다.
'0'은 48이라고 하였다. 10 + 48의 아스키코드표의 값은 ':'이므로 당연히 저런 결과가 나온다.
애초에 10의 값을 문자열 형태로 표현하고 싶어서 char를 접근하였다면... 잘 못된 접근이므로 정수형을 문자열로 변경하는방법을 찾는것이 더 빠르고 효율적이였을겁니다.
반응형
'JAVA' 카테고리의 다른 글
JAVA - 제네릭이란? (0) | 2020.04.29 |
---|---|
JAVA - 랜덤 문자열 생성기 (0) | 2020.04.17 |
JAVA8 - Lamda 함수형 인터페이스 종류 (0) | 2020.03.24 |
JAVA - ActiveMQ 연결 예제 (2) | 2020.03.13 |
JAVA - 콜백함수 구현하기(Interface, Functional Interface 활용) (0) | 2020.03.12 |