char 타입을 int 타입으로 변환하기

SionBackEnd·2023년 1월 11일
0

자바 스터디

목록 보기
17/21

개요

종종 알고리즘을 풀다보면 아래와 같이 char타입을 int타입으로 변경해야하는 순간들이 있다.

int totalSum = 0;
String number = "1234";
char []	 charArr = number.toCharArray();
for(int i = 0; i<charArr.length; i++){
	//char를 int형으로 변환하여 totalSum에 더하기 
  	}
 retrun totalSum;

char 타입은 int타입으로 강제 변환을 하게 되면 아스키 코드값이 나오게 되기 떄문에 형변환했다가 당혹스러운 순간이 있다. 이때 알아두면 좋은 방법 두가지를 소개한다.

방법1

내가 주로 많이 사용하는 방법인데 코드를 먼저보자.

int totalSum = 0;
String number = "1234";
char []	 charArr = number.toCharArray();
for(int i = 0; i<charArr.length; i++){
	//char를 int형으로 변환하여 totalSum에 더하기 
	totalSum += charArr[i] - '0';
  	}
 retrun totalSum;

char타입 값에 '0' 아스키 코드값을 뺐다. 전제조건은 char타입 값은 48~ 57사이 값이어야한다는 점이다. 0의 아스키 코드 값이 48인점을 이용해서 아스키 코드값들끼리의 연산을 통해서 나온 아스키 코드 값을 int형으로 강제 형변환하는것이다.

하지만, 구글링을 해서 더 좋은 방법이 있는지 확인해본결과 역시나 내가 원하는 메서드를 자바는 미리 제공하고 있었다.

방법2 (추천)

코드먼저 확인하자.

int totalSum = 0;
String number = "1234";
char []	 charArr = number.toCharArray();
for(int i = 0; i<charArr.length; i++){
	//char를 int형으로 변환하여 totalSum에 더하기 
	totalSum += Character.getNumericValue(charArr[i]);
  	}
 retrun totalSum;

자바의 라이브러리에 Character.getNumericValue(); 메서드가 존재하는데

char testCharNum = '5';
char A = 'a';
int numericValue1 = Character.getNumericValue(testIntNum);
int numericValue2 = Character.getNumericValue(A);
numericValue1 = 5;
numericValue2 = 10;

Character.getNumbericValue(char ch) 설명

Java getNumericValue(char ch)메소드는 Character클래스의 일부입니다. 이 메서드는 지정된 int 값을 반환합니다. 지정된 문자에 int(숫자) 값이 없으면 -1 을 반환 하고 음수가 아닌 정수(예: 분수 또는 소수 값)로 표현할 수 없는 숫자 값이 있으면 -2 를 반환합니다.

핵심은 자바가 char문자를 int형으로 변환시킨후 아스키 코드값을 이용하여 저장되어있는 int값을 리턴해주는 형식이다.

기억하자 이메서드는 유용하게 이용될것같다.

profile
많은 도움 얻어가시길 바랍니다!

0개의 댓글