Java/자바 API
자바 Objects.requireNonNull() 을 사용하는 이유
Objects.requireNonNull(T obj) 오브젝트가 null 이라면 NullPointerException 을 던진다. public static T requireNonNull(T obj) { if (obj == null) throw new NullPointerException(); return obj; } 사용 이유 어차피 null 에서 메서드를 호출하면 NullPointerException 은 던져질텐데 왜 사용할까? 빠른 실패 아래는 /register 에서 name 이라는 파라미터를 받아서 포맷팅을 한 후 저장하는 코드의 예시이다. 만일 register() 메서드에 Objects.requireNonNull() 이 있었다면, register() 에서 에러가 터졌을 것이다. register()..
자바 CountDownLatch란?
CountDownLatch 란? 공식문서 설명 A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes. A CountDownLatch is initialized with a given count. The await methods block until the current count reaches zero due to invocations of the countDown() method, after which all waiting threads are released and any subsequent invocations of aw..
자바 스트링 풀에 대해 쉽게 이해하기
자바의 스트링 풀 String 객체의 값은 불변이다. 자바에 익숙하지 않은 사람은 String 객체의 값이 불변이라는게 무슨 뜻인지 잘 모를 것이다. 불변이란 것은 한번 저장된 값이 절대 변하지 않는다는 뜻이다. 그런데, String 타입의 변수를 선언하고, 내부의 값을 바꾸면 값이 잘 바뀌는 것처럼 보이는 것은 왜일까? 사실 우리가 문자열 변수의 내용을 변경할 때는 실제로 값이 변경되는 것이 아니라, 스트링풀이라는 저장소에 미리 사용될 문자들이 몽땅 저장되어 있는데, 문자열 변수의 내용 자체가 바뀌는 것이 아니라 문자열 변수가 가리키는 주소만 바뀌는 것이다. @Test public void immutableString() { String a = "abc"; System.out.println("a의 시스..
자바 WeakMap 쉽게 알아보기
자바의 Reference 알아보기 자바의 WeakMap 을 이해하기 위해서는 자바의 Reference 를 이해해야 한다. Reference는 WeakHashMap을 이해하기 위한 선행 지식이다. 자바에서는 기본으로 지원하는 int, long, float 과 같은 primitive 타입이 아닌 클래스를 이용하여 변수를 구성하는 경우, Reference 라는 것을 이용하여 변수에 Heap 메모리 영역 내부 실제 값이 있는 주소를 연결시킨다. 보통 변수가 직접 값을 가지고 있는 것이 아니다. 변수는 메모리 주소만 가지고 있는 것이다. Strong Reference (강한 참조) Integer myNumber = 10; 우리가 가장 일반적으로 이용하는 그냥 변수 할당이다. 이를 강한 참조라고 한다. myNumb..