첫날에는 Java 개발 환경과 자바 프로그램이 실행되는 전체 흐름, 그리고 기본 타입에 대해 학습했다.
아직 문법을 깊게 다루는 단계는 아니지만, 이후 학습을 이해하기 위해 반드시 짚고 넘어가야 하는 개념들이었다.
1. 중요 개념 정리
- 기계어(Machine Code)
컴퓨터가 이해하고 직접 실행할 수 있는 0과 1로 이루어진 코드 - 소스 파일(Source File)
사람이 프로그래밍 언어로 작성한 파일
(자바의 경우 확장자는 .java) - 컴파일(Compile)
소스 파일을 컴퓨터가 실행할 수 있는 형태로 번역하는 과정 - JDK (Java Development Kit)
자바 프로그램을 개발하기 위한 도구 모음
JVM(Java Virtual Machine), 컴파일러(javac), 실행 도구(java) 등을 포함한다. - 환경 변수(Environment Variable)
운영체제가 프로그램을 실행할 때 참고하는 설정 값
JDK 설치 후 터미널에서 javac, java 명령어를 사용하기 위해
JAVA_HOME 및 PATH 환경 변수를 설정해야 한다.
2. 환경 변수 설정 (JAVA_HOME)
JDK가 설치된 경로를 일반적으로 JAVA_HOME이라고 부른다.
일부 프로그램은 JDK의 설치 위치를 직접 찾지 않고 JAVA_HOME 환경 변수를 통해 참조하기 때문에, 해당 변수를 등록해 두는 것이 좋다.
또한 PATH 환경 변수에 JDK의 bin 경로를 추가해야 터미널에서 javac, java 명령어를 바로 사용할 수 있다.
3. 자바 프로그램 개발 과정
자바 프로그램은 다음과 같은 흐름으로 실행된다.
- .java 확장자를 가진 소스 파일을 작성
- javac 명령어로 컴파일
- .class 확장자의 바이트 코드 파일 생성
- java 명령어로 실행
Hello.java → javac → Hello.class → java → 실행
여기서 생성되는 .class 파일은 완전한 기계어가 아닌 바이트 코드이기 때문에, 바로 실행될 수는 없다.
4. 바이트 코드와 JVM (Java Virtual Machine)
자바 프로그램은 바이트 코드 파일(.class)로 구성된다.
이 바이트 코드는 운영체제에서 바로 실행할 수 없으며, JVM(Java Virtual Machine) 이라는 가상 머신이 필요하다.
JVM의 역할은 바이트 코드를 해당 운영체제에서 실행 가능한 기계어로 변환하는 것이다.
이 구조 덕분에 자바는 플랫폼 독립성을 가진다.
예를 들어:
- Windows에서 컴파일한 .class 파일을
- Linux 환경으로 옮겨서
- 수정 없이 그대로 실행할 수 있다.
운영체제마다 JVM 구현은 다르지만, 바이트 코드는 동일하게 동작한다.
5. 기본 타입 (Primitive Type)
자바는 총 8개의 기본 타입을 제공한다.
- 정수 타입
byte, short, int, long, char - 실수 타입
float, double - 논리 타입
boolean
6. 정수 타입 특징
- char 타입은 음수 값을 가질 수 없다
- 메모리 크기: 2byte
- 표현 범위: 0 ~ 65535 (유니코드)
- long 타입은 큰 수를 다룰 때 사용한다.
- 자바 컴파일러는 정수 리터럴을 기본적으로 int 타입으로 간주한다.
따라서 int 범위를 초과하는 값을 long 변수에 저장할 경우,
리터럴 뒤에 L을 붙여야 한다.
long balance = 30000000000000; // 컴파일 에러
long balance = 30000000000000L; // 정상
- 단, int 범위 내의 값이라면 L을 붙이지 않아도 된다.
7. char 타입과 유니코드
하나의 문자를 작은따옴표(' ')로 감싼 것을 문자 리터럴이라고 한다.
자바에서 char 타입은 문자를 유니코드 값으로 저장한다.
유니코드는 전 세계 문자를 2byte 숫자로 표현하는 국제 표준이다.
char var1 = 'A'; // 65
char var2 = 'B'; // 66
char var3 = '가'; // 44032
char var4 = '각'; // 44033
8. 참조 타입과 참조 변수
자바의 타입은 크게 기본 타입과 참조 타입으로 나뉜다.
- 기본 타입
실제 값을 변수에 직접 저장 - 참조 타입
객체가 저장된 메모리 주소(번지)를 변수에 저장
(배열, 클래스, 인터페이스, 열거 타입 등)
즉, 참조 타입 변수는 값 자체가 아니라 객체를 가리키는 주소를 통해 객체를 참조한다는 의미에서 참조 타입이라고 부른다.
📚 Reference
- 『혼자 공부하는 자바』, 신용권 저
'Learning Log' 카테고리의 다른 글
| equals가 있는데 hashCode는 왜 필요할까? (0) | 2026.01.27 |
|---|---|
| abstract vs interface: 비슷한데 왜 굳이 둘 다 있을까? (0) | 2026.01.27 |
| [멋사 클라우드 5기] Day 4 - 상속, 다형성, 그리고 abstract vs interface (0) | 2026.01.27 |
| [멋사 클라우드 5기] Day 3 - 객체 생성 흐름과 클래스 구조 이해하기 (1) | 2026.01.25 |
| [멋사 클라우드 5기] Day 2 - 배열, Git & GitHub 기본 개념 정리 (0) | 2026.01.25 |
