더북(TheBook)

마지막으로 String 값인 1234int1234로 바꿔주겠습니다. 11000, 2200, 330, 44여야겠죠?

result = result * 10 + (str.charAt(i)-'0'); 

 

이 문장을 하나씩 살펴보겠습니다. (str.charAt(i)-'0') 부분부터 알아볼까요? 형변환을 기억할 것입니다. 다음과 같이 출력하면 콘솔에 어떻게 출력될까요?

System.out.println(1+'1'); 

 

int형과 char형의 + 연산을 실행해 출력 결과는 50입니다. 이때 char1은 실제 1을 표현하는 코드값인 49와 정수 1plus 연산을 수행하기 때문입니다. char형은 실제 저장 장소에 저장될 때 약속한 코드값으로 저장됩니다. 이 약속한 값이 048, 149, 250입니다. 이 값으로 그냥 연산하면 안 되겠죠? 실제 얻어온 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라는 값을 얻어옵니다. 이렇게 반복해서 수행하면 원하는 결괏값을 얻어올 수 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.