본문 바로가기

Language24

자바7 업데이트 - 숫자 리터럴 구분자 자바 7부터는 숫자 리터럴의 숫자 사이에 언더스코어(_)를 사용할 수 있습니다. 이 구분자를 사용하면 의미 있는 숫자끼리 그룹화하는 것이 가능하며, 이로 인해 코드의 가독성이 높아집니다. int noUnderScore = 200000000; int useUnderScore = 200_000_000; long noUS = 9223372036854775800L; long useUS = 9_223_372_036_854_775_800L; 정수형 int의 기본 데이터 범위는 ~2147483648 ~ 2147483647이고, long의 경우에는 이보다 훨씬 큰 -9223372036854775808 ~ 9223372036854775807입니다. 따라서 큰 자릿수의 숫자일 경우 한눈에 파악하기가 어렵기 때문에 언더스코.. 2020. 10. 20.
[Refactoring] if문 Martin Fowler의 저서 Refactoring에는 다양한 "코드의 악취(Code Smell)"에 대해 설명되어 있습니다. Martin Fowler는 코드의 악취만 제거해도 썩 괜찮은 코드가 된다고 하고, 반대로 코드에서 악취가 느껴진다면 이는 시스템 내에 더 깊은 문제가 있음을 의미한다고 이야기합니다. 그러므로 리팩토링은 코드를 작성한 이후 반드시 수행해야 하는 절차라고 말합니다. 간혹 리팩토링을 수행하면 성능이 떨어진다고 주장하는 개발자들을 만날 수 있습니다. 리팩토링의 결과로 객체가 분리되거나 메서드 호출의 횟수가 증가하게 되며, 그 결과 실제로 메모리 사용량과 CPU 사용량이 모두 증가하기 때문입니다. 하지만 성능에 치명적인 영향을 주는, 예를 들어 파일 입출력이나 데이터베이스 작업과 같은 .. 2020. 10. 20.
Map의 Value 얻기 - KeySet => EntrySet Map에서 key 목록을 이용하여 value를 얻으려 할 때, 많은 개발자들이 다음과 같은 방법을 사용합니다. public void test(Map info){ for(String key : map.keySet()){ System.out.println(map.get(key)); } } 하지만 이 방법은, key를 얻어오고 다시 한번 map으로부터 value를 얻어오기 때문에 성능에 심각한 문제가 발생하게 됩니다. 하여 다음과 같은 방법으로 변경하여야 합니다. public void test(Map info){ for(Map.Entry entry : info.entrySet()){ System.out.println(entry.getValue()); } } 2020. 10. 12.
HashMap의 동작방법 이 아티클은 Jackson Joseraj가 DZone에 게시한 How HashMap Works in Java 에 대한 번역물입니다. HashMap이 내부적으로 어떻게 동작하는지에 대한 질문은 면접 때에 가장 인기 있는 질문입니다. 대부분의 사람들은 HashMap을 사용할 줄 알거나 HashMap과 HashTable의 차이는 알고 있습니다. 그러나 "HashMap이 내부적으로 어떻게 동작하는가?"에 대한 질문에 대해서는 어려워합니다. 질문에 대한 해답은 해싱 원리에 기반하여 작동한다는 것이지만 말처럼 간단한 문제는 아닙니다. 해싱은 쉽게 반복하는 알고리즘을 사용하면서 유니크한(유일무이한) 코드를 변수 또는 속성에 할당하는 매커니즘으로, 해싱 메커니즘에 같은 객체를 적용시켰을 때, 항상 같은 hashcode.. 2020. 10. 12.