JAVA 기초 문법 강의
목표
- JVM에 대한 이해
- 변수와 상수의 이해
- 저장 공간의 종류에 대한 이해
- 저장 공간 종류(변수 타입) 간의 변환에 대한 이해
JAVA 의 특징
- 어디서나 동작 가능한 언어
- 클래스(바구니 틀)/객체(바구니) 중요한 요소!! → 객체 지향적 언어
JVM
- 자바의 가상 환경
- 이를 통해 어디서든 코드가 구동할 수 있도록 함
- java 컴파일러를 통해 .java 파일을 .class(바이트 코드)로 변환

- java를 개발할 수 있게끔 하는 키트 → JDK
변수
- 값의 타입 & 이름
- 선언 = 초기화
- 변하는 저장 공간
상수
- 변하지 않는 저장 공간
- 변수 앞에 final 추가 → 상수로 선언 (즉, 덮어쓰기를 시도하면 오류!!)
변수 타입
- 기본형 & 참조형
- 기본형 : 숫자, 문자형(char), boolean …
- 문자형은 선언 시, 홑따옴표
- float 는 선언 뒤에 F(접미사)가 붙음
- 참조형 : String(문자열), Object, Array, List …
- 문자열은 선언 시, 쌍따옴표
- Array는 출력 시, Arrays.toString 사용
- Wrapper Class
- ex) int number = 21;
Integer num = number;
Sop(num.intValue());
- 아스키 코드

💡 **Stack 영역 vs Heap 영역**
- Stack의 경우에는 정적으로 할당된 메모리 영역입니다.
- 그래서, 크기가 몇 byte 인지 정해져있는 기본형 변수를 저장합니다.
- 추가로, 크기가 정해져있는 참조형 변수의 주소값도 저장합니다.
- Heap의 경우에는 동적으로 할당된 메모리 영역입니다.
- 그래서, 크기가 계속 늘어날 수 있는 참조형 변수의 원본을 저장합니다.
형 변환
- 자동으로 형을 바꿔주는 형태
- 변수 타입 별 크기 순서
- bytechar → short(2) → int(4) → long(8) → float(4) → double(8)
- 작은 크기의 타입이 큰 크기의 타입으로 넘어갈 때 자동으로 형 변환이 일어남
- 작은 크기의 타입이 큰 크기의 타입과 계산될 때 큰 타입으로 형 변환
💡 **자동 형변환 vs 강제 형변환**
**작은 타입 > 큰 타입 형변환시 (자동 형변환)**
- 더 큰 표현범위를 가진 타입으로 변환되는것이라 값의 손실이 없습니다.
- 값의 손실없이 변환이 가능하기 때문에 컴파일러가 자동으로 형변환을 해줍니다.
**큰 타입 > 작은 타입 형변환시 (강제 형변환 = 캐스팅)**
- 더 작은 표현범위를 가진 타입으로 변환된는것이라 값의 손실이 생깁니다.
- 값의 손실이 생기기 때문에 자동으로 형변환을 해주지 않고 개발자가 선택하여 형변환을 합니다.