본문 바로가기

Java

(4)
[Java] Wrapper Wrapper 자바에는 크게 2가지 자료형으로 구분할 수 있습니다. 기본 타입인 Primitive Type 과 참조 타입인 Reference Type 입니다. 여기서 기본타입은 int, double, float, boolean등이 있는데 이를 객체로 표현화한 것을 Wrapper 클래스 라고합니다. Primitive Class Wrapper class byte Byte char Character int Integer float Float double Double boolean Boolean long Long short Short Wrapper 클래스의 종류는 위와같이 존재하고 Primitive Type에서 Wrapper Type으로 만드는 과정을 Boxing, Wrapper Type에서 Primitive ..
[Java] Optional NullPointerException(NPE) 자바 개발자들은 한번씩 본 Exception 일겁니다. null 객체에서 메서드를 호출하거나 객체필드에 접근하거나 throw 하는 등의 상황에서 발생합니다. 보통 해당 Exception은 사용 전 if 문을 통해 null인지 검사 한번 하게되면 해결할 수 있는 문제인데요. 하지만 매번 if 문을 통해 확인을 해야하기 때문에 가독성이 좋지않아 Java8 부터는 Optional 을 지원해줍니다. Optional Optional 은 null이 올 수 있는 값을 감싸는 Wrapper 클래스로 참조하더라도 NPE가 발생하지 않습니다. 또한 위와같이 value 라는 변수에 값을 저장하기 때문에 값이 null이더라도 NPE가 발생하지 않습니다. 초기화 Optional 클..
[Java] 메모리 영역과 Garbage Collection Garbage Collection 대표적인 자바의 메모리 관리 방법 중 하나로 Heap 영역에서 동적 할당된 메모리 중 필요없게 된 메모리를 모아 주기적으로 제거하는 프로세스입니다. 메모리 영역 앞서 GC가 Heap 영역을 관리한다 했는데 그 영역이 무엇일까요? 자바 프로그램이 실행되면 JVM이 OS로 부터 메모리를 할당받고, 할당받은 메모리 영역을 여러영역으로 나누어 관리합니다. 메모리 영역에는 정적인 영역과 동적인영역 둘로 나눌 수 있습니다. 정적인 영역 Method 영역 또는 Static 영역이라고 불리우는 영역이 있습니다. 1. JVM이 동작해서 클래스가 로딩될 때 생성됩니다. 그리고 해당 영역의 데이터는 프로그램 시작부터 종료까지 메모리에 남아있습니다. 2. 읽어들인 클래스와 인터페이스에 대한 ..
[Java] JRE, JDK, JVM Java Compile 1. 개발자가 .java 라는 파일을 생성합니다. 2. java의 컴파일러가 .class 라는 바이트 코드를 생성하게됩니다. 아직은 컴퓨터가 이해할 수 없는 파일입니다. 3. 이를 Class Loader 를 이용해 JVM 메모리 내로 로드합니다. 4. JVM은 이를 각 운영체제에 맞는 기계어로 번역하여 동작을 진행합니다. JRE 자바로 짠 소프트웨어가 있다고 가정할게요. 이 소프트웨어가 컴파일 및 빌드까지 다 마치고 실행될 때의 환경요소로써 필요한 것들을 모아둔 곳이에요. JRE가 JVM의 실행환경을 구현했다고도 이야기해요. 예를들어 자바의 List, Map, Set 같은 자료구조들을 바이트로 된 클래스로 제공해주는 것이에요. JDK JDK는 JRE를 포함해서 가지고 있기 때문에 ..