charAt이란 string 타입으로 받은 문자열을 char 타입으로 한 글자만 받게 해주는 함수이다.
숫자형 문자를 CharAt함수로 추출하면 char형이므로 int 형으로 변환하려하면 아스키코드로 변환된다.
따라서 '0' 또는 48을 빼주어야 의도한대로 계산할 수 있다.
String n = "123";
n.charAt(0); // 1
n.charAt(1); // 2
n.charAt(2); // 3
(int) n.charAt(0) + (int) n.charAt(1) // 49 + 50 = 99
'0'(char) => 48
'1'(char) => 49
'2'(char) => 50
여기서 -'0'(48)
을 해주면 원하는 숫자가 나온다.
n.charAt(0)-'0' = 49-48 = 1
n.charAt(1)-'0' = 50-48 = 2
출처