728x90
CharAt
CharAt 함수는 문자열에서 index를 통해 특정 위치의 문자를 반환받는 함수다.
매개변수는 int형으로 받고 리턴값은 char형으로 반환된다.
String str = "환영합니다.";
str.charAt(0); // 환
str.charAt(1); // 영
str.charAt(2); // 합
str.charAt(3); // 니
str.charAt(4); // 다
str.charAt(5); // .
String num = "12345";
num.charAt(0); //1
num.charAt(1); //2
num.charAt(2); //3
num.charAt(3); //4
num.charAt(4); //5
만약 String형의 문자들을 CharAt 함수를 이용해서 반환 후
int형로 변환하여 계산식에 사용하고자 하면 아래와 같은 결과가 나온다.
String num = "12345";
num.charAt(0); // 1
num.charAt(1); // 2
(int) num.charAt(0) + (int) num.charAt(1); // 99
그 이유는 CharAt으로 반환받은 '1'은 int형이 아닌 char형, 즉 int로 변환시키면 아스키코드값인 49로 변환되기 때문.
'0'(char) -> 48
'1'(char) -> 49
'2'(char) -> 50
'3'(char) -> 51
'4'(char) -> 52
따라서 (int) num.charAt(0) + (int) num.charAt(1) 의 값은 99으로 출력된다.
이 때 -'0'(48)을 해주면
48 - 48('0') = 0
49 - 48('0') = 1
50 - 48('0') = 2
51 - 48('0') = 3
52 - 48('0') = 4
CharAt(int i) - '0'을 통해 char형의 문자들을 int형으로 변환시킬 수 있다.
마무리
CharAt(int index)로 추출한 숫자형 문자는 char형이므로 int형으로 변환 시 아스키코드로 변환된다.
따라서 '0'(48)을 빼주어야 의도한 리턴값을 얻을 수 있다.
728x90
'개발&etc > JAVA' 카테고리의 다른 글
[java] 코드는 한줄씩 차례대로 실행된다 (1) | 2023.03.06 |
---|---|
[java] 변수와 리터럴 (0) | 2023.03.06 |
[자바] 문자열 배열 반환하기: toCharArray() (0) | 2023.02.21 |
[JAVA] 절대값 : Math.abs() (0) | 2023.02.21 |
[JAVA] split된 문자열 List로 삽입하기 (0) | 2023.02.21 |