마지막으로 String 값인 1234를 int 값 1234로 바꿔주겠습니다. 1은 1000, 2는 200, 3은 30, 4는 4여야겠죠?
result = result * 10 + (str.charAt(i)-'0');
이 문장을 하나씩 살펴보겠습니다. (str.charAt(i)-'0') 부분부터 알아볼까요? 형변환을 기억할 것입니다. 다음과 같이 출력하면 콘솔에 어떻게 출력될까요?
System.out.println(1+'1');
int형과 char형의 + 연산을 실행해 출력 결과는 50입니다. 이때 char인 1은 실제 1을 표현하는 코드값인 49와 정수 1이 plus 연산을 수행하기 때문입니다. char형은 실제 저장 장소에 저장될 때 약속한 코드값으로 저장됩니다. 이 약속한 값이 0은 48, 1은 49, 2는 50입니다. 이 값으로 그냥 연산하면 안 되겠죠? 실제 얻어온 char 값에 ‘0’을 빼줘야 원하는 값을 얻을 수 있습니다. 따라서 (str.charAt(i)-'0')라고 해줍니다.
첫 번째 반복문을 실행했을 때 ‘1’이라는 char 값을 얻어낼 수 있고,
result = result * 10
이 부분에서 처음 result값은 0이었으므로, 이 문장을 실행하면 result에는 1이라는 정숫값이 들어가겠죠? 다음 반복문을 실행하면 result에는 1이라는 값이 들어있는 상태이므로, result*10을 하면 10이 얻어지고, (str.charAt(i)-'0')을 수행하면 2를 얻어옵니다. 따라서 해당 문장을 수행하면, 12라는 값을 얻어옵니다. 이렇게 반복해서 수행하면 원하는 결괏값을 얻어올 수 있습니다.