글
문제
다음 코드는 무엇을 출력할까요?
public class Elementary { public static void main(String[] args) { System.out.println(12345 + 5432l); } }
풀이
이 문제는 왼쪽 숫자는 12345, 오른쪽 숫자는 54321 로 인식하여 66666 을 출력할 것이라고 착각하게 만듭니다. 하지만 오른쪽 숫자는 54321 이 아니라 5432l 입니다. 즉, int 형 12345 + long 형 5432 가 되어서 17777 이 출력되게 됩니다.
이처럼 많은 개발자들이 소문자 l 과 숫자 1 을 혼동하므로, long 자료형의 숫자를 나타낼 때는 아래 코드처럼 절대 소문자 l 을 사용하지 말고 대문자 L 을 사용하세요.
System.out.println(12345 + 5432L);
마찬가지로 다음 코드와 같이 변수 이름으로 소문자 l 을 사용하지 마세요.
List<String> l = new ArrayList<String>(); l.add("Foo"); System.out.println(1);
정리를 해보면, 소문자 l 은 숫자 1 과 비슷하게 생겼습니다. 또한 일부 폰트에서는 구분조차 불가능합니다. 따라서 long 자료형을 나타낼 때와 변수 이름에는 소문자 l 을 사용하지 말기 바랍니다.
(조슈아 블로크, 닐 개프터, 『자바 퍼즐러』, 윤인성 옮김, 한빛미디어 (2014.12.04), p33~34 참고)
'9.1) 자바 퍼즐러 > CHAPTER 2. 표현식 퍼즐' 카테고리의 다른 글
2 번째 퍼즐. 변화를 위한 시간 (0) | 2017.07.03 |
---|---|
1 번째 퍼즐. 홀수 확인 (0) | 2017.06.20 |
RECENT COMMENT