이것이 자바다 - 1~4장
지금까지 나는 언어를 책으로 공부해본 적이 없다. 백엔드 개발자를 희망하고 지금까지 스프링 부트 프로젝트를 진행해 왔는데, 자바 언어에 대한 깊은 이해를 한 적이 없어 2018년 혹은 2019년도에 산 책을 꺼내본다. 지금까지 코드 잘 작성해왔고 요즘 AI가 다 잘 해주는데 굳이? 라는 생각을 할 수 있다. 맞다. 근데 지금 이 시기가 내가 자바에 대해 잘 몰랐던 부분과, 추상적으로 알고 있는 개념들을 명확하게 이해할 수 있는 마지막 기회라고 생각해 공부하려 한다. 개정 전 책이라 최신 문법 일부가 빠져있어서 해당 부분은 책을 모두 읽고 난 후에 보충하여 공부할 계획이다.
1장: 자바 시작하기
java : JVM 실행 → 바이트코드 로드/검증/실행 (바이트코드 → 기계어)
- 인터프리터
- JIT 컴파일러
javac : Java compiler. java → class 바이트 코드 변환.
2장: 변수와 타입
리터럴(literal)
소스 코드 내에서 직접 입력된 값. 상수와 같은 의미지만 구분하기 위해 리터럴 용어 사용
(프로그램에서의 상수 : 값을 한 번 저장하면 변경할 수 없는 변수)
- 정수 리터럴
- 10진수
- 8진수 : 0으로 시작되는 숫자
- 16진수 : 0x 또는 0X로 시작
- 실수 리터럴 (기본 타입은 double. float는 리터럴 뒤에
f혹은F를 붙여야 한다.) - 문자 리터럴 : 작음 따옴표로 묶은 텍스트
- 문자열 리터럴
- 논리 리터럴
데이터 타입
- char : 2바이트 정수. Unicode를 저장하기 위함 (
'\u유니코드값(16진수)'로 저장 가능) - int : 4바이트 (byte, short, char는 산술 연산을 하면 먼저 int로 승격되어 연산되고, 결과 타입도 int임)
- float, double — 부동소수점 ($\pm\ (1.m) * 2^n$ 꼴) … IEEE 754
- 부호 (1 bit)
- 가수 m (23 or 52 bits)
- 지수 n (8 or 11 bits)
타입 변환
- 묵시적 타입 변환 : 실행 중에 자동으로 변환. 작은 크기 타입이 큰 크기 타입에 저장될 때 발생
- 정수 → 실수는 O (가수 범위로 인한 정밀도 손실 발생 가능)
- 실수 → 정수는 X
- 명시적 타입 변환 (캐스팅)
int를byte로 캐스팅해서 저장하면, 4바이트 중, 앞에 3바이트는 버려지고 끝에 있는 1바이트만 저장됨
3장: 연산자
- 단항 연산자 : 증감(++, --), 부호(+, -), 비트(~), 논리(!)
- 이항 연산자
- 삼항 연산자
NaN과 Infinity 연산
- 0으로 나누면 → 컴파일 OK, but 런타임
ArithmeticException- 실수 타입 0.0 / 0.0F로 나누면 →
/연산은 Infinity,%연산은 NaN(Not a Number)
⇒ NaN인 이유는a % b = a - trunc(a / b) * b인데b = 0.0이면Infinity * 0.0이 되고 IEEE 754에 따라 NaN이 된다.
- 실수 타입 0.0 / 0.0F로 나누면 →
- Double.isInfinite() → Infinity인지 확인
- Double.isNaN() → NaN인지 확인
- NaN은
!=연산자를 제외하고 모든 비교 연산자에서false리턴
비트 이동 연산자
<<>>: 빈자리는 최상위 부호 비트와 같은 값으로 채워짐>>>: 빈자리는 무조건 0으로 채워짐
4장: 조건문과 반복문 (패스)
'CS > 스터디' 카테고리의 다른 글
| 이것이 자바다 - 5~6장 (0) | 2026.01.08 |
|---|---|
| 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 - 6, 7장 (0) | 2026.01.05 |
| 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 - 5장 (0) | 2025.12.30 |
| 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 - 3, 4장 (0) | 2025.12.24 |
| 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 - 1, 2장 (0) | 2025.12.16 |