Section 1. Java 자료형
1. Java 기본 자료형 (Primitive Type)
- int / float / double / char / boolean 등 다른 언어와 동일하게 기본 자료형 존재
- 문자열 자료형은 string 객체 (클래스)가 따로 존재
- 상수 변수 - final 키워드 이용
- 정적 변수 - static 키워드 이용
2. Java 참조 자료형 (Reference Type)
- 객체 (클래스)를 타입으로 변수를 선언하는 자료형
- String 객체는 생성할 때 new () 명시 생략 가능
Car car1 = new Car("생성자 변수"); # Car = 참조 자료형 (Car 클래스를 타입으로 함)
3. 변수 저장 방식
- 기본 자료형 - 값을 변수에 저장
- 참조 자료형 - 객체 (인스턴스)의 주소를 레퍼런스 변수에 저장
3. Literal 자료형
- 프로그램에서 사용하는 숫자, 문자, 논리 값 등을 뜻함
- 리터럴은 상수풀 (Constant Pool) 내에 존재
- 기본 자료형 변수에 저장되는 값이 바로 이 literal 자료형
- 정수 리터럴 -> int / 실수 리터럴 -> double 로 저장됨
double dnum = 3.14;
float fnum = 3.14F; # 식별자 명시
4. 형변환
서로 다른 자료형 간 연산을 위해 하나의 자료형으로 통일하는 것
- 묵시적 형변환(자동 형변환)과 명시적 형변환(강제 형변환)
- 바이트 크기가 작은 자료형에서 큰 자료형으로 형 변환은 자동으로 이루어 짐
# 자동 형변환
byte bNum = 10;
int iNum = bNum;
int iNum1 = 20;
float fNum = iNum2;
# 강제 형변환
int iNum = 10;
byte bNum = (byte)iNum;
double dNum = 3.14;
int iNum2 = (int)dNum;
Section 2. Java 메모리 구조
1. 일반적인 프로그램 메모리 구조
- 정적 메모리 영역 / 동적 메모리 영역 존재
- 정적 메모리 할당 / 동적 메모리 할당 존재
2. Java JVM 메모리 구조
- Thread 고유 영역 - Stack 영역
- Thread 공유 영역 - Method, Heap 영역
- 메소드 영역
- Constant Pool 존재
- 힙 영역
- String Constant Pool 존재
- 클래스를 기반으로 실제로 생성된 객체 (인스턴스)가 존재
- 스택 영역
- 지역 변수 , 메인 함수 내의 레퍼런스 변수 등 존재