자바에서 Collection을 사용하는 단순한 연산이 특정 상황에서 비효율적일 수 있기 때문에 hashCode를 사용한다. 예를 들면 다음과 같다. List words = Arrays.asList("Welcome", "to", "junwoo"); if (words.contains("junwoo"){ System.out.println("Junwoo is in the list"); } "junwoo"가 있는지 확인하는 위의 코드는 List의 사이즈가 커질수록 비효율적인 선형탐색 과정을 거친다. hashCode의 이해 hashCode는 hashing 알고리즘에 의해 만들어진 Integer 값을 리턴한다. 똑같은 Object는 반드시 똑같은 hashCode를 리턴해야 하지만 반대는 필수적이지 않다. 두 번째의 ..
전체 글
fac, si facistry - with - resources 는 try(..) 문에서 선언된 객체들에 대해서 try가 종료될 때 자동으로 자원을 해제해주는 기능이다. 주로 외부 자원인 파일 관련 객체와 socket Handler 객체와 같은 자원들은 try - catch - finally 문을 사용하여 마지막에 다 사용한 자원을 해제한다. AutoCloseable은 try에 선언된 객체가 AutoCloseable을 구현했더라면 Java는 try구문이 종료될 때 객체의 close() 메소드를 호출해 준다. Java6에서 리소스 사용 및 해제하는 방법을 한번 살펴보고, try-with-resources로 동일한 코드를 리팩토링해보자. 1. AutoCloseable 사용 방법 다음은 try - catch - finally 를 사..
상수를 선언할 때 private final로 선언하면 되는데 굳이 private static final 선언하는 이유가 뭘까 결론부터 말하자면 초기화 한 값을 끝까지 유지하기 위해서이다. (값을 불변으로 만들기 위해) 만약 private final 로 선언한다면 직접적으로 값을 참조할 수 없지만 생성자를 통해 값을 참조할 수 있다. 하지만 private static final 로 선언한다면 생성자를 통해 값을 참조할 수 없다. (이때 private static final 변수는 반드시 초기화되어 있어야 한다.) 절대 해당 값을 바꾸지 않겠다는 표현과 유사하다. private static final 을 선언한 변수를 사용하면 재할당하지 못하며, 메모리가 한번 올라가면 같은 값을 클래스 내부의 전체 필드, ..