플렉션(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
'JAVA > JAVA' 카테고리의 다른 글
HashMap 반복문 조회 (0) | 2020.11.09 |
---|---|
Integral division result cast to double or float (0) | 2020.11.09 |
JAVA 금액 한글로 변환 (0) | 2020.06.04 |
java String.format() VS DecimalFormat 속도 비교 (0) | 2020.06.04 |
Java Application 중복 실행 방지(배치 프로그램) (0) | 2020.06.04 |