목차
1. Open JDK 설치 - ADOPTIUM


x64는 64bit, x86은 32bit를 나타낸다.
본인 컴퓨터 사양을 확인해보는 방법은 내 PC - 우클릭 - 속성 에서 확인할 수 있다.
예시)




이 부분은 아무거나 선택해도 상관없다.

폴더를 따로 지정해주고 싶다면 Browse를 이용해 위치를 지정해주면 된다.

환경 변수를 확인하러 내 PC - 우클릭 - 속성 - 고급 시스템 설정을 클릭한다.



시스템 변수에 JAVA_HOME 을 확인하고 경로가 맞는지 확인한다. 경로는 Adoptium JDK가 설치된 경로이다.
나는 따로 폴더를 지정하지 않았기 때문에
C:\Program Files\Eclipse Adoptium\jdk-8.0.442.6-hotspot
로 저장이 되어있다.


%JAVA_HOME%bin;
을 추가해주면 된다. 이유는 모르겠지만 설치한 JDK 위치가 자동으로 추가되어있다.
windows키 + R

cmd 입력 후 Enter

java -version
을 입력하면 제대로 설치된 것을 알 수 있다.
2. IntelliJ Ultimate 설치


원하는 위치에 설치 후 다음

표시한 4개는 꼭 체크해야한다‼️
나는 java 언어를 사용할 것이기 때문에 .java 체크!

나는 따로 설정하지 않고 설치 눌러줬다.
설치 후에 즉시 재부팅할 것인지 나오는데, 가능하면 바로 재부팅해주면 된다.
3. intelliJ Ultimate 실행하기


본인이 결제한 건이 있으면 jetBrain 계정 로그인을 하여 연동하면 된다.


4. Chapter 1 - 1 : Hello, Java!
수업 목표
● Java가 무엇인지 알아보고 Java의 특징을 학습합니다.
● IDE를 사용하여 간단한 Java 프로그램을 실행하는 방법을 학습합니다.
예전의 컴퓨터 세계에서는 C, C++ 같은 언어들이 운영체제 마다 코드가 다르게 동작하는 문제를 가지고 있어, 디버그를 자주 해줬어야 했음.
* 디버그
- 문제를 해결하는 과정.
- 최초의 컴퓨터 오작동이 실제로 벌레가 회로에 끼어서 문제를 일으켰기 때문에 생긴 말.
- 버그 : 오류를 뜻함.
1) Java
- Write Once, Run Anywhere!
("한 번 작성하면 어디서든 실행할 수 있도록!")
- 1995년 James Gosling의 주도로 탄생됨.
2) Java의 특징
A. 플랫폼 독립성
- 만든 프로그램은 어느 환경이던 실행될 수 있음.
환경 : Windows, Mac, Linux 등.
- JDK(Java Development Kit)
: 자바 프로그램을 개발할 때 필요한 개발 도구 모음.
JDK (Java Development Kit) ← Java 개발에 필요한 모든 것 포함
├── JRE (Java Runtime Environment) ← Java 실행 환경
│ ├── JVM (Java Virtual Machine) ← 바이트코드 실행
│ ├── Java 라이브러리 (rt.jar 등) ← 필수 API 제공 (java.lang, java.util 등)
│ ├── 클래스 로더 (Class Loader) ← .class 파일 로드
│
├── Javac (Java Compiler) ← .java → .class 변환
├── 기타 개발 도구 (디버거, Javadoc 생성기, JAR 도구 등)
■ Javac(Java Compiler)
- 자바 컴파일러는 Java 파일을 바이트코드(.class)로 변환.
- 바이트코드는 JVM이 해석할 수 있는 코드.
● 바이트코드(.class)
□ Java 프로그램이 실행되기 위해 변환되는 중간 단계의 코드.
□ JVM만 있다면 실행환경 상관 없이 어디서든 실행 가능.
■ JVM(Java Virtual Machine)
- 자바 가상 머신
- 바이트코드를 해석하고 자바 프로그램을 실행시키는 역할.
- JVM 덕분에 실행환경에 관계없이 자바 프로그램을 동작시킬 수 있음.
[정리 – Javac와 JVM]
Javac와 JVM을 통해서 플랫폼의 독립성을 보장받을 수 있음.
→ 운영체제가 달라도 JVM만 있으면 어느 곳에서든 실행됨.
[실습 – 코드로 플랫폼 독립성 살펴보기]
class 클래스이름 {
public static void main(String[] args) { // 프로그램의 시작점
// 실행될 명령어들을 작성하는 공간입니다.
}
}
- 중괄호{ } : 시작과 끝을 의미함.
괄호 사이에 작업할 내용을 작성하면 프로그램이 끝날 때까지 괄호 안의 첫문장부터 마지막 문장까지 수행함.
- 주석 // : 코드에 대한 설명을 적는 부분. 프로그램 실행에는 영향을 주지 않음.
[코드 예시]
public class Main {
public static void main(String[] args) {
// (주석) 코드에 대한 설명 작성!
System.out.println("Hello world!");
}
}
[결과]
public class Main {
public static void main(String[] args) {
// (주석) 코드에 대한 설명 작성!
System.out.println("Hello Java!");
}
}
[결과]
💡컴파일된 바이트코드 살펴보기

[실제 바이트코드]

B. 객체지향 - 모든 것이 클래스.
- Java의 모든 것들은 객체(class)로 이루어져 있음.
- 객체와 클래스는 개념적으로 다르지만 실무에서는 혼용해서 많이 쓰임.
- 자바에서 코드를 작성할 때 서로 관련있는 기능을 묶어 하나의 클래스로 관리함.
개념 | 비유 | 설명 |
클래스 | 설계도 | 객체를 만들기 위한 정의 |
객체 | 설계도를 기반으로 만들어진 존재 | 클래스에서 만들어진 존재 |
- Main.java 라는 파일이 있으면 Main이라는 객체를 생성하기 위한 클래스임.
[실습 : 클래스 만들기]
C. 거대한 생태계
- Java는 오랜 시간 동안 선호되어 온 프로그래밍 언어.
- 수많은 개발자들이 함께 하고 있기 때문에 언제든지 도움 받을 수 있음.
- 다양한 오픈소스 라이브러리, 프레임워크 등을 가지고 있으며
관련 학습 자료(공식문서, 기술블로그, 참고서적)도 쉽게 찾을 수 있음.
[퀴즈]
Q1. Java의 공식 슬로건?
A) Write Once, Run Anywhere.
✅Java 프로그램은 한 번 작성하면 운영체제(OS)에 관계없이 JVM에서 실행될 수 있음을 의미
Q2. 바이트코드는 어디에서 실행될까요?
A) JVM
✅JVM이 해석하고 실행
Q3. Java 프로그램이 컴파일된 후 생성되는 파일의 확장자는 무엇일까요?
A) .class
✅javac 가 .java 파일을 바이트코드(.class)로 변환함
Q4. Java를 만든 사람은 누구일까요?
A) 제임스 고슬링.
✅ 제임스 고슬링은 Sun Microsystems에서 Java를 개발했고 "Java의 아버지"로 불립니다.
5. Chapter 1 - 2 : 컴퓨터의 기억방식
수업 목표
● 컴퓨터가 어떻게 정보를 기억하는지 알아봅시다.
● 주기억장치가 무엇인지 알아봅시다.
● 보조기억장치가 무엇인지 알아봅시다.
● 바이트(Byte)가 무엇인지 알아봅시다.
● 비트(Bit)가 무엇인지 알아봅시다.
1. 주기억장치 - 메모리(RAM : Random Access Memory)
- 보통 RAM 이라고 하면 메모리를 의미함.
- 특징 : 휘발성, 빠른 속도.
- 휘발성 : 컴퓨터에서 문서를 작성하다가 저장하지 않고 갑자기 종료되면 작업하던 내용이 모두 사라지게 됨.
2. 보조 기억 장치 - HDD/SSD
- 하드디스크 : 정보를 영구적으로 저장.
- 특징 : 영구저장, 느린 속도.
구분 | 종류 | 특징 |
RAM | 주 기억장치 | 휘발성, 빠름 |
HDD/SSD | 보조 기억장치 | 영구저장, 느림 |
* 컴퓨터가 메모리를 관리하는 방법
- 컴퓨터의 메모리는 1바이트 단위로 주소가 매겨져 관리됨.
* 바이트(Byte)
- 컴퓨터가 데이터를 저장하고 처리하는 단위 중 하나.
- 1바이트는 8비트로 구성되어 있음.
* 비트(Bit)
- 컴퓨터가 데이터를 저장하고 처리하는 단위 중 하나.
- 메모리의 최소 저장 단위.
- 1비트는 0 혹은 1 중에서 한 개를 저장할 수 있는 공간.
- 저장 단위가 1비트 증가할 때마다 저장할 수 있는 공간은 2배로 늘어남.
* 메모리를 절약하려면?
- 메모리 절약은 좋은 프로그래머가 되기 위한 첫걸음.
- 필요한 데이터의 크기를 판단하고 적당한 크기를 활용해 데이터를 저장하는 것이 좋음.
[퀴즈]
Q1. 1바이트(byte)는 몇 비트(bit)일까요?
A) 8비트.
✅ 8비트 입니다. 256개(0~255) 개의 데이터를 저장할 수 있습니다.
2^8 → 1비트는 데이터를 2개의 데이터를 표현하고 한 번 증가할 때마다 데이터가 2개씩 증가하기 때문에 256개.
Q2. 1비트에 저장할 수 있는 데이터의 수는 몇 개일까요?
A) 2개.
✅ 2개 입니다. 1비트에는 0 과 1 중에서 한가지를 저장할 수 있습니다.
Q3. 컴퓨터의 주기억장치는 무엇일까요?
A) RAM
✅ a. 컴퓨터의 주기억장치는 RAM(메모리) 입니다.
Q4. 휘발성 메모리는 어떤 특징을 가질까요?
A) 전원이 꺼지면 데이터가 사라진다.
✅ b. 전원이 꺼지면 작업하던 내용이 사라집니다. 이를 휘발성 이라고 합니다.
6. Chapter 1 - 3 : 자바 프로젝트 관리
수업 목표
● IDE 로 Java 코드 관리하는 방법을 학습합니다.
● 패키지가 무엇인지 학습합니다.
● 클래스가 무엇인지 학습합니다.
● 카멜케이스와 스네이크케이스가 무엇이고 어떻게 다른지 학습합니다.
1. 이름 규칙 종류
- 카멜 케이스(camel Case)
■ 낙타(Camel Case) → 대문자가 혹처럼 튀어나옴.
■ 첫글자는 무조건 소문자로 시작.
ex) firstName, lastName, fullName
- 스네이크 케이스(snake_case)
■ 뱀(Snake Case) → 언더스코어가 뱀처럼 이어짐.
ex) first_name, last_name, full_name
2. 패키지(폴더)
- 파일들의 묶음.
- 관련된 자바 클래스들을 그룹으로 묶는 기능.
- 즉, 폴더처럼 파일(클래스)을 정리해서 관리할 수 있도록 도와주는 역할을 함.
[실습 : 패키지 만들기]
3. 패키지 이름 규칙
- 패키지명은 소문자로 적는 것을 권장함.
규칙 | 나쁜 예시 | 좋은 예시 |
소문자만 활용(권장) | ⚠️chapTer1 | ✅chapter1 |
숫자로 시작 금지 | ❌ 1chapter | ✅ chapter1 |
특수문자 사용 금지 | ❌ chapter#1 | ✅ chapter1 |
예약어 사용 금지 | ❌class, ❌public, ❌static |
* 예약어 : Java에서 점유하고 있는 키워드들을 말함.
ex) static, class 등
4. 클래스(파일)
- 클래스 이름이 파일명이 됨.
import chapter1.MyNewClass;
public class Main {
public static void main(String[] args) {
System.out.println("Hello Java!");
new MyNewClass();
}
}
- new MyNewClass(); 로 다른 클래스를 가져와서 쓸 수 있음.
- import chapter1.MyNewClass; 가 자동으로 생성됨.
현재 파일에서 MyNewClass 가 어떤 패키지에 속해있는지 알려주는 것.
* import : MyNewClass 클래스를 프로그램 시작 지점(Main 클래스)에서 활용할 때 사용되는 패키지가 어느 패키지에 속한 클래스인지 명시해줌.
→ 하나의 프로젝트 안에서 동일한 이름을 가진 클래스가 존재할 수 있기 때문.
5. 클래스 이름 규칙
- Pascal Case : 첫글자 대문자 + 카멜케이스 조합으로 작성함.
Ex) MyNewClass
[퀴즈]
Q1. 다음 중 올바른 자바 클래스 이름은?
A) Car
✅ 1. Car
자바 클래스 이름은 ‘대문자’로 시작하는 🐫UpperCamelCase 스타일이 권장됩니다.
Q2. 자바 패키지 이름은 일반적으로 어떤 스타일로 사용되는가?
A) 소문자로 점(.)을 이용한 계층 구조.
✅ 4. 소문자로 점(.)을 이용한 계층 구조
자바 패키지 이름은 일반적으로 소문자를 사용하며, 계층 구조를 표현하기 위해 .을 사용합니다.
예: com.example.myapp
❌ CamelCase(대문자로 시작)나 snake_case(언더스코어 사용), kebab-case(하이픈 사용)는 자바 패키지 명명 규칙에 맞지 않습니다.
Q3. testpackage.Car 클래스를 Main 클래스의 main 메서드에서 활용하려고 합니다. 올바른 import 방법은?
A) import testpackage.Car;
✅ 3. import testpackage.Car;
- ❌ testpackage 내 모든 클래스를 import 하므로 Car 만 사용할 수는 없습니다. 필요하지 않은 클래스까지 import 가 되기 때문입니다.
- ❌패키지 구조는 testpackage.Car 형태로 접근해야하며 Main 은 패키지명이 아닙니다.
- ✅ 특정 클래스를 명확하게 import 하는 방식입니다.
- ❌import Car 패키지명이 없으면 기본 패키지에서 찾으려고 하지만 Car 클래스는 testpackage에 위치하고 있기 때문에 Car 를 찾을 수 없습니다.
'스파르타 내일배움캠프 > TIL(Today I learned)' 카테고리의 다른 글
25.02.26 TIL - 조건문, 반복문, 배열, 메서드 (3) | 2025.02.26 |
---|---|
25.02.25 TIL - Java 변수, 입출력, 연산자 (4) | 2025.02.25 |
25.02.21 TIL - 웹 개발 미니 프로젝트 회고, TIL 강의 (1) | 2025.02.21 |
25.02.20 TIL - 웹개발 미니 프로젝트(3) (0) | 2025.02.20 |
25.02.19 TIL - 웹개발 미니 프로젝트(2) (1) | 2025.02.19 |