문제

다음 코드는 무엇을 출력할까요?


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 참고)

by kkikkodev 2017. 7. 3. 20:35