카테고리 없음

[TIL] JAVA 기초 공부 기록 : 실제로 쓰는 문법 중심으로 정리해보기

mooncommit 2026. 3. 18. 23:51

오늘은 프로젝트 대신 자바 기초 강의에 집중했다.
아직 모든 강의를 다 듣진 못했지만, 들으면서 ‘이건 꼭 알아둬야겠다’ 싶은 핵심 개념들이 계속 나왔다.

 

그래서 오늘은 그중에서도 실전에서 자주 쓰이는 문법 중심으로 정리했다.
직접 실습하면서 찍은 이미지도 함께 첨부해, 나중에 복습할 때 바로 참고할 수 있도록 구성했다.

 

아직 기초를 배우는 단계지만, 하나하나 코드를 실행해보며 제대로 이해하고 나만의 방식으로 정리해본 시간이었다.


Chapter 1. 자료형 (Data Type)

자료형의 개념

자료형(Data Type)은 프로그램에서 저장할 수 있는 데이터의 형태와 크기를 정의하는 규칙이다.
컴퓨터는 모든 데이터를 비트(bit) 단위로 저장한다.
  • 1비트(bit) : 0 또는 1 값을 표현할 수 있는 최소 단위
  • 1바이트(byte) : 8비트로 구성 (즉, 1 byte = 8 bits)
  • 자바의 자료형은 이 "바이트 단위 크기"에 따라 저장 범위가 달라진다.
자료형 = "데이터의 크기와 형태를 결정하는 규칙"

자바 기본 자료형 

1 Byte = 8 bits / 1 KB = 1024 Bytes / 1 MB = 1024 KB


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);    
    }
}

오른쪽 Console 실행 결과

더보기

자바의 기본은 결국 변수 + 자료형 + 네이밍 규칙 이 세 가지를 정확하게 이해하면,

코드의 가독성과 유지보수가 훨씬 쉬워진다.


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);
    }
}

입력한 문장이 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() 사용

문자열 비교 결과

연산자는 “이해”보다 “익숙함”이 중요하다. 직접 많이 써보는 것이 가장 빠른 학습이다.

학습을 마치며

아직 기초 단계이지만,

이 부분이 앞으로의 모든 코드의 기반이 된다는 점에서 더 꼼꼼하게 이해하려고 했다.

 

아직 부족한 부분도 많지만,

이렇게 직접 정리하고 복습하는 과정이 쌓이면 분명 큰 차이를 만들 거라고 생각한다.

 

다음 학습에서는 더 깊이 있는 내용으로 확장해 나가볼 것이다.