오늘은 프로젝트 대신 자바 기초 강의에 집중했다.
아직 모든 강의를 다 듣진 못했지만, 들으면서 ‘이건 꼭 알아둬야겠다’ 싶은 핵심 개념들이 계속 나왔다.
그래서 오늘은 그중에서도 실전에서 자주 쓰이는 문법 중심으로 정리했다.
직접 실습하면서 찍은 이미지도 함께 첨부해, 나중에 복습할 때 바로 참고할 수 있도록 구성했다.
아직 기초를 배우는 단계지만, 하나하나 코드를 실행해보며 제대로 이해하고 나만의 방식으로 정리해본 시간이었다.
Chapter 1. 자료형 (Data Type)
자료형의 개념
자료형(Data Type)은 프로그램에서 저장할 수 있는 데이터의 형태와 크기를 정의하는 규칙이다.
컴퓨터는 모든 데이터를 비트(bit) 단위로 저장한다.
- 1비트(bit) : 0 또는 1 값을 표현할 수 있는 최소 단위
- 1바이트(byte) : 8비트로 구성 (즉, 1 byte = 8 bits)
- 자바의 자료형은 이 "바이트 단위 크기"에 따라 저장 범위가 달라진다.
자료형 = "데이터의 크기와 형태를 결정하는 규칙"
자바 기본 자료형

Naming Rule (이름 짓는 규칙)
코드는 "사람이 읽는 언어" 이기 때문에, 규칙적인 네이밍이 중요하다.
🐪 카멜케이스(Camel Case)
- 단어가 이어질 때 두 번째 단어의 첫 글자를 대문자로
- ex) firstName, lastName, userAge
- 클래스 이름 : 첫 글자 대문자 (StudentInfo, CarModel)
🐍 스네이크케이스(Snake Case)
- 단어 사이에 _ (언더스코어) 사용
- ex) first_name, user_age
- 파이썬이나 데이터베이스에서 자주 사용
📦 패키지명 규칙
- 전부 소문자로 작성
- 여러 단어일 경우 . 으로 구분
- ex) package chapter1.datatype;, com.example.project
변수 (Variable)
변수는 데이터를 저장하는 "이름이 붙은 공간" 이다.
컴퓨터의 메모리 안에 특정 값을 저장하고 재사용하기 위한 도구
기본 구조
자료형 변수이름;
예시 :
int age;
double pi;
String name;
- 선언(Declaration): 변수 공간을 만든다.
- 할당(Assignment): 그 공간에 값을 넣는다.
- 재할당(Reassign): 기존 값을 새 값으로 덮어쓴다.
int age = 25; // 선언 + 초기화
age = 30; // 재할당
👀 변수 네이밍 팁
- 카멜케이스 사용 (userName, itemCount)
- 명확한 의미의 명사형으로 작성
- 예약어 (int, class, if) 는 사용 불가
자료형 예제 코드
public class DataTypeExample {
public static void main(String[] args) {
boolean isJavaFun = true;
char grade = 'A';
byte smallNum = 127;
short shortNum = 32000;
int intNum = 100000;
long bigNum = 10000000000L;
float decimal1 = 3.14f;
double decimal2 = 3.1415926535;
System.out.println("boolean: " + isJavaFun);
System.out.println("char: " + grade);
System.out.println("byte: " + smallNum);
System.out.println("short: " + shortNum);
System.out.println("int: " + intNum);
System.out.println("long: " + bigNum);
System.out.println("float: " + decimal1);
System.out.println("double: " + decimal2);
}
}

자바의 기본은 결국 변수 + 자료형 + 네이밍 규칙 이 세 가지를 정확하게 이해하면,
코드의 가독성과 유지보수가 훨씬 쉬워진다.
Chapter 2. 입력과 출력 (Input & Output)
개념 정리
자바에서 출력(Output) 은 System.out 객체를 통해 콘솔에 텍스트를 표시하고,
입력(Input) 은 Scanner 객체를 통해 사용자의 입력값을 프로그램으로 읽어온다.
- System.out → 출력 장치(모니터)
- Scanner → 입력 장치(키보드)
이렇게 연결된다고 이해하면 된다.
🖥️ 출력 (Output)
println : 출력 후 자동으로 줄 바꿈

print : 줄 바꿈 없이 출력

개행문자 \n : 줄바꿈을 의미하는 문자

⌨️ 입력 (Input)
입력은 데이터를 자바 세상으로 전달하는 것을 말한다.
사람이 데이터를 읽을 때 눈을 사용하듯, 자바는 데이터를 읽을 때 Scanner 라는 객체를 사용한다.
출력을 할 때도 System 객체의 도움을 받듯이 입출력은 모두 객체를 통해 이루어진다.
1. 문자열 Scanner 객체 소환하기
scanner를 사용하려면, 먼저 import를 통해 불러오고 new Scanner(System.in) 코드로 객체를 생성해야 한다.
import java.util.Scanner; // Scanner를 사용하려면 import 필요
public class ScannerPractice {
public static void main(String[] args) {
// ✅ Scanner 객체 생성 & 변수에 담기
Scanner scanner = new Scanner(System.in);
}
}
- import java.util.Scanner; → Scanner 기능을 불러오기
- new Scanner(System.in) → 사용자 입력 받을 준비 완료
2. 문자열 입력받기 (nextLine)
문자열 입력은 nextLine()을 사용한다. (사용자의 문장 전체를 그대로 읽어오는 방식)
import java.util.Scanner;
public class ScannerPractice {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("좋아하는 문장을 입력하세요: ");
String sentence = scanner.nextLine(); // ✅ 문자열 입력받기
System.out.println("좋아하는 문장: " + sentence);
}
}

3. 숫자 입력받기 (nextInt, nextDouble, nextLong)
숫자 입력은 데이터 타입에 맞는 메서드를 사용한다.
정수 → nextInt() / 실수 → nextDouble() / 큰 정수 → nextLong()
import java.util.Scanner;
public class ScannerPractice {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("정수를 입력하세요: ");
int num1 = scanner.nextInt(); // 정수 입력
System.out.print("실수를 입력하세요: ");
double num2 = scanner.nextDouble(); // 실수 입력
System.out.print("큰 정수를 입력하세요: ");
long num3 = scanner.nextLong(); // 큰 정수 입력
System.out.println("입력한 정수: " + num1);
System.out.println("입력한 실수: " + num2);
System.out.println("입력한 큰 정수: " + num3);
}
}

자바에서 입력은 Scanner 객체를 통해, 출력은 System 객체를 통해 이루어진다.
Chapter 3. 연산자 (Operators)
개념 정리
연산자는 변수나 값에 대해 계산을 수행하는 기호이다.
자바에서 연산자는 크게 다음과 같이 나뉜다.
- 산술 연산자
- 대입 연산자
- 증감 연산자
- 비교 연산자
- 논리 연산자
🕶️ 산술 연산자 (Arithmetic Operator)
기본적인 사칙연산을 수행하는 연산자이다.
int a = 10;
int b = 3;
System.out.println(a + b); // 덧셈
System.out.println(a - b); // 뺄셈
System.out.println(a * b); // 곱셈
System.out.println(a / b); // 나눗셈

⚠️ 나눗셈 주의사항
정수끼리 나누면 소수점이 버려진다.
int result = 10 / 3;
System.out.println(result); // 3
✔️ 해결 방법
실수형 (double) 으로 변환
double result2 = 10 / 3.0;
System.out.println(result2); // 3.333...
➕ 모듈러 연산 (%)
나머지를 구할 때 사용한다.
int mod = 10 % 3;
System.out.println(mod); // 1
💡 자주 쓰이는 활용
- 짝수 / 홀수 판별
int mod1 = 6 % 2;
System.out.println(mod1); //0 (짝수)
int mod2 = 7 % 2;
System.out.println(mod2); //1 (홀수)
- 시간 계산
int mod3 = (10 + 5) % 12;
System.out.println(mod4);

🕶️ 대입 연산자 (Assignment Operator)
값을 변수에 저장하거나 계산한 결과를 대입할 때 사용한다. (항상 가장 마지막에 실행)
int num = 5;
➕ 복합 대입 연산자
누적 계산할 때 자주 쓰인다.
int num = 5;
num += 3; // 8
num -= 2; // 6
num *= 2; // 12
num /= 3; // 4
num %= 3; // 1
- num += 3 은 num = num + 3 과 동일

🕶️ 증감 연산자 (++ / --)
값을 1 증가 또는 감소시킬 때 사용한다.
int num = 1;
num++; // 2
num--; // 1
🔥 전위 vs 후위 (중요)
- 전위 연산 (++i) : 먼저 증가 → 그 다음 사용
int a = 5;
System.out.println(++a); // 6
- 후위 연산 (i++) : 먼저 사용 → 그 다음 증가
int b = 5;
System.out.println(b++); // 5
System.out.println(b); // 6

🕶️ 비교 연산자 (Comparison Operator)
두 값을 비교하여 true / false를 반환한다.
| 연산자 | 설명 | 예제 | 결과 |
| == | 두 값이 같을 때 | 10 == 10 | true |
| != | 두 값이 다를 때 | 10 != 5 | true |
| > | 왼쪽이 크면 | 10 > 5 | true |
| < | 왼쪽이 작으면 | 10 < 5 | false |
| >= | 왼쪽이 크거나 같으면 | 10 >= 10 | true |
| <= | 왼쪽이 작거나 같으면 | 10 <= 5 | false |
✔️ 예제
System.out.println(10 == 10); // true
System.out.println(10 != 5); // true
System.out.println(10 > 5); // true
System.out.println(10 < 5); // false

🕶️ 논리 연산자 (Logical Operator)
조건식을 연결하거나 반대로 전환할 때 사용한다.
| 연산자 | 이름 | 설명 | 예시 | 결과 |
| && | AND | 두 조건이 모두 참일 때 | true && false | false |
| || | OR | 하나라도 참이면 | true || false | true |
| ! | NOT | 참 ↔ 거짓 반전 | !true | false |
✔️ AND (&&) : 둘 다 true일 때만 true
true && true // true
true && false // false
✔️ OR (||) : 하나라도 true면 true
true || false // true
✔️ NOT (!) : true / false 반전
!true // false

🕶️ 연산자 우선순위
연산자는 실행되는 순서가 정해져 있다.
| 우선순위 | 종류 |
| 1 | 괄호 () |
| 2 | 산술 (*, /, %, 그 다음 +, -) |
| 3 | 비교 (>, <, >=, <=, ==, !=) |
| 4 | 논리 (!, &&, ` |
| 5 | 대입 (=) |
👀 우선순위가 헷갈릴 때는 괄호 () 를 적극 사용
✔️ 예제
boolean result = 10 + 5 > 12 && true;
✔️ 실행 과정
(10 + 5) → 15 15 > 12 → true true && true → true
✔️ 논리 연산 우선순위
! → && → ||

🕶️ 문자열 비교
문자열 비교는 반드시 equals() 를 사용해야 한다.
❌ 잘못된 방법
text1 == text2 // 주소 비교 (X)
✅ 올바른 방법
String text1 = "Hello";
String text2 = "Hello";
System.out.println(text1.equals(text2)); // true
왜 equals()를 사용할까?
- == → 메모리 주소 비교
- equals() → 실제 값 비교
- 결론 : 실무에서는 무조건 equals() 사용

연산자는 “이해”보다 “익숙함”이 중요하다. 직접 많이 써보는 것이 가장 빠른 학습이다.
학습을 마치며
아직 기초 단계이지만,
이 부분이 앞으로의 모든 코드의 기반이 된다는 점에서 더 꼼꼼하게 이해하려고 했다.
아직 부족한 부분도 많지만,
이렇게 직접 정리하고 복습하는 과정이 쌓이면 분명 큰 차이를 만들 거라고 생각한다.
다음 학습에서는 더 깊이 있는 내용으로 확장해 나가볼 것이다.