본문 바로가기

Java/basic8

자바의 클래스, 인스턴스, 메서드 관련 개념 목차 1. 자바의 클래스 정의, 클래스 구성요소 2. 인스턴스(객체) 선언 - new keyword 3. 메서드 정의 4. 메서드 오버로딩, 메서드 오버라이딩 5. 객체의 생성자 6. this keyword 7. Reflexion API 1. 자바의 클래스 정의, 클래스 구성요소 클래스는 개체를 정의하는 틀이다. (객체의 속성과 기능을 하나로 묶어 놓은 틀) 혹은 데이터와 함수의 결합, 사용자 정의 타입 등으로 정의할 수 있다. 클래스의 구성요소로는 멤버변수, 생성자, 메서드, 초기화 블록, 접근 지정자(access modifier), 그외의 modifier로 분류할 수 있다. 1. 멤버변수(property, member variable, attribute, field, state) - 객체지향에서 속성.. 2022. 10. 30.
자바 연산자, JDK 13+의 switch operator 목차 1. 자바의 연산자 종류(산술, 비트, 논리, 관계, instanceof, assignment, arrow, tenary operator) 2. 기존의 switch expression과 JDK 13+의 switch operator 3. 연산자 우선순위 1. 자바에서의 연산자 산술연산자 + - * / , Infinity 혹은 NaN(not a number) Java에서 / 또는 % 연산자를 사용할 때 제수가 정수 0인 경우에는 RuntimeException의 하위 클래스인 ArithmeticException이 발생한다. 그런데 만약 제수가 정수 0이 아니라 실수 0.0f 혹은 0.0d인 경우에는 Infinity 혹은 NaN(not a number)가 반환된다. 이 값에 추가적인 산술연산을 하더라도 I.. 2022. 10. 30.
자바 변수의 종류, 특징 - Primitive type, Reference type 목차 1. Primitive 변수 타입의 종류와 특징 2. 컴퓨터에서의 정수, 실수 표현법, 자바에서의 정수 실수 사용법 3. Reference type 4. 리터럴 5. 변수 타입별 스코프, 각각의 라이프 사이클 6. type casting(명시적 형변환), type promotion(자동 형변환) 7. 타입 추론 var(JDK 10+) 1. Primitive 변수 타입의 종류와 특징 타입 종류 용량 기본값 범위 byte(정수형) 1 byte 0 -128 ~ 127 short 2 byte 0 -32,748 ~ 32767 int 4 byte 0 -2,147,483,648 ~ 2,147,483,647(21억) long 8 byte 0L -9,223,372,036,854,775,808 ~ 9,223,372,.. 2022. 10. 30.
JIT 컴파일러 동작과정 자바코드를 자바 컴파일러가 컴파일하면 바이트코드(컴파일된 자바코드. JVM이 읽을 수 있는 코드)가 되는데 이를 실행하는 과정에서 인터프리터와 JIT 컴파일러를 실행하는 쓰레드가 같이 돌면서 바이너리 코드(OS들이 읽을 수 있는 바이너리코드)로 변환하게 된다. (바이트코드 실행시 interpreter와 JIT 컴파일러가 동시에 돌아감) JVM 내부의 실행엔진에 있는 인터프리터는 바이트코드 명령어를 하나씩 읽어서 해석하고 실행하는데, 하나하나 해석하면서 실행하기 때문에 느릴 수 있다. JIT 컴파일러는 native code 중에 반복되어 사용되는 코드나 기계어로 변환 시에 많은 리소스가 필요한 부분을 실시간으로 변환해서 기계어로 캐싱해두는 방식으로 최적화를 하기 때문에 인터프리터보다 실행 성능이 좋을 수 .. 2022. 10. 30.