용어정리
플렉션(Reflection)
로딩이 완료된 클래스에서 또 다른 클래스를 동적으로 로딩(Dynamic Loading)하여 사용하는것.
Class.forName("클래스이름").newInstance
인터프리터(interpreter)
자바 컴파일러에 의해 변환된 자바 바이트 코드(.class)를 읽고 해석하는 역할
클래스 로더(Class Loader)
동적으로 클래스를 로딩해주는 역할
JIT 컴파일러(Just-In-time compiler)
프로그램이 실행중인 런타임에 실제 기계어로 변환해주는 컴파일러
동적 번역(Dynamic Translation)이라고도 불리며, 프로그램 실행 속도를 향상시키기 위해 개발됨
자바 컴파일러가 생성한 자바 바이트 코드를 런타임에 기계어로 변환하는데 사용
JVM 실행 과정
OS로 부터 메모리를 할당 받음
자바 컴파일러(javac)가 자바코드(.java)를 읽어 바이트코드(.class)로 변환
변환된 Class 파일들을 Class Loader를 통해 JVM 메모리영역(Runtime Data Areas) 영역으로 로딩
로딩된 Class 파일들은 Execution engine을 통해 해석
해석된 바이트 코드는 Runtime Data Areas에 배치되어 수행
수행 과정 중 필요에 따라 Tread Synchronization, GC 같은 관리 작업 수행
참조(Reference)
.get() // return Object
primitive 타입
값을 복사하여 사용한다.
reference 타입
객체를 공유(공유참조)하므로, 객체내 값을 복사하여 사용하도록 해야한다.
SET 이 필요한 경우 객체 전체를 새로 만들자
동일성 비교
인스턴스의 참조 값을 비교(==)
동등성 비교
인스턴스의 값을 비교 (equals())
불변객체
생성 시점 이후 값을 변경할 수 없는 객체
생성자로만 값을 설정하고, 수정자를 만들지 않음
참고 : Integer, String
출처: https://lovon.tistory.com/88?category=862726 [Java 개발 블로그]
'JAVA > Java' 카테고리의 다른 글
문자에서 숫자만 추출 (0) | 2022.04.26 |
---|---|
java 이메일 형식 검사 (0) | 2022.04.26 |
java 전화번호 구분자 추가 (0) | 2022.04.26 |
HashMap 반복문 조회 (0) | 2022.04.26 |
Generic Type Parameter 이름 컨벤션 (0) | 2021.11.12 |
자료 구조 List, Set, Map의 차이 / Set과 Map 비교 (0) | 2021.10.06 |
java, optional의 orElse와 orElseGet의 차이 (0) | 2021.05.24 |
JAVA GC (Garbage Collector) (0) | 2021.04.11 |