■ Java 에서 Integer.toString() 함수를 써야 하는 이유 |
안녕하세요. 제임스입니다.
바로 이전 포스팅에서 Integer.toString() 함수에 대해 간략히 정리 했는데요.
이번에는 실제 코딩 시 Integer.toString() 함수를 써야 하는 이유에 대해 언급하고자 합니다.
우선 아래 코드를 보시겠습니다.
1 2 3 | Integer val = 12; System.out.println("val1 = "+val); System.out.println("val2 = "+val.toString()); | cs |
위 코드를 실행 시 결과 값은 아래와 같습니다.
val1 = 12
val2 = 12
Integer 값을 바로 프린트 해도 결과 값은 동일하게 나옵니다.
그렇다면 굳이 길게 쓸 필요 없지 않을까요? 라는 생각을 하시는 분들이 있을 수 있습니다.
물론 보통의 경우 위와 같이 코드들 작성한다고 크게 문제가 되지는 않습니다.
하지만 안전한 코딩을 하는 연습을 하기 위해 위와 같이 toString() 함수를 사용하시는 것을 권장 드립니다.
아래 코드를 보시겠습니다.
1 2 3 4 5 6 7 8 9 10 11 | int intVal = 5; sampleCode(intVal); sampleCode2(intVal); private static void sampleCode(int intVal) { System.out.println("number" + '=' + intVal); } private static void sampleCode2(int intVal) { System.out.println(intVal + '=' + "number"); } | cs |
5라는 int 값을 아래와 같이 두가지 방법으로 표기 해봅니다.
첫번째 ---> "number" + '=' + 5
두번째 ---> 5 + '=' + "number"
예상되는 결과 값은 아래와 같습니다.
number=5
5=number
하지만 실제로 프로그램을 실행 해봤을때 결과 값은 예상과 다릅니다.
number=5
66number
왜 이렇게 나올까요?
숫자 + 부호의 식이 만들어 질 경우 부호를 유니코드 값으로 변환하여 처리 하는 경우가 생깁니다. (위 예제와 같은 경우) 유니코드 상에서 = 기호 값이 61 입니다.
즉, 5+61 한 결과 값이 66이므로 66number 라는 생각지도 못한 결과 값을 리턴하게 됩니다.
그렇기 때문에 sampleCode2 함수의 코는 아래와 같이 toString() 함수를 이용하여 변경하는 것이 좋습니다.
1 | System.out.println(Integer.toString(intVal) + '=' + "number"); | cs |
아래 샘플 코드는 StackOverflow 에서 발췌한 샘플 코드 인데요.
URL 정보를 미처 확보하지 못해 링크는 못걸었습니다.
1 2 3 4 | display(2, '+', 3, 5); public static void display(int num1, char operator, int num2, int result) { System.out.println(num1 + operator + num2 + '=' + result); } | cs |
위 코드를 실행 시키면 아래와 같은 결과 값이 나옵니다.
114
2 + 43 (+ 의 유니코드 값) + 3 + 61 (= 의 유니코드 값) + 5 을 계산한 결과 값이 114 입니다.
위 코드를 안전한게 toString() 함수를 이용하여 작성해 보겠습니다.
1 2 3 4 | displaySafe(2, '+', 3, 5); public static void displaySafe(int num1, char operator, int num2, int result) { System.out.println(Integer.toString(num1) + operator + Integer.toString(num2) + "=" + result); } | cs |
결과 값은 아래와 같습니다.
2+3=5
이제서야 원했던 결과 값이 제대로 나온것 같습니다. ^^
왜 toString 함수를 쓰는 것이 좋은 습관인지 아시겠죠? 물론 대부분의 경우 위와 같은 케이스를 경험하기는 힘듭니다. 하지만 평상시에 연습하지 않으면 당연하다는 생각에 코드 상에서 오류가 발생해도 쉽사리 찾기 어렵습니다. 경험담입니다 ㅠㅠ
좋은 코딩 습관을 기르는 연습이 왜 필요한지 한번 생각해 보는 것도 좋겠죠? ^^
▼ 도움이 되셨다면 로그인이 필요 없는 ▼
▼ 하트 클릭 한번 부탁 드립니다 ▼
감사합니다 :D
'Java' 카테고리의 다른 글
[ 자바 코딩 ] Java Number - ceil() 함수 (491) | 2018.04.03 |
---|---|
[ 자바 코딩 ] Java Number - Math.abs() 함수 (491) | 2018.04.02 |
[ 자바 코딩 ] Java Numbers - toString() 함수 (477) | 2018.03.29 |
[ 자바 코딩 ] Java Number - valueOf vs parseInt (497) | 2018.03.27 |
[ 자바 코딩 ] Java Number - valueOf() 함수 (507) | 2018.03.26 |