목록으로

[자바 기초] 2강. 데이터 그릇 만들기: 변수(Variable)와 자료형 완벽 가이드

지난 시간 복습과 이번 강의 목표

지난 1강에서는 개발 환경을 구축하고 Hello World를 출력하며 프로그래밍의 첫발을 떼셨습니다. 하지만 우리가 만든 프로그램은 단순히 정해진 문장만 앵무새처럼 반복할 뿐, 계산이나 데이터 저장을 할 수는 없었습니다.

프로그램이 똑똑해지려면 데이터를 기억해야 합니다. 예를 들어, "연봉이 5,000만 원이고 세율이 15%일 때 세금은 얼마인가?"를 계산하려면, 500015라는 숫자를 어딘가에 담아두고 계산해야겠죠.

이번 시간에는 데이터를 저장하는 그릇인 **변수(Variable)**와, 그 그릇의 모양을 결정하는 **자료형(Data Type)**에 대해 배워보겠습니다.


1. 변수(Variable)란 무엇인가?

변수는 쉽게 말해 **'데이터를 담는 이름이 붙은 상자'**입니다. 컴퓨터의 메모리(RAM)라는 거대한 창고에서, 우리가 사용할 특정 공간을 빌려서 이름을 붙이는 행위라고 보시면 됩니다.

변수 선언과 초기화

자바는 매우 엄격한 언어입니다. 상자를 만들 때 "이 상자에는 무엇을 담을 것인지" 미리 정해야 합니다. 물컵에 밥을 담을 수 없듯이, 숫자 상자에는 숫자만 담아야 합니다.

// 형식: [자료형] [변수이름] = [값];

int age = 25;        // 'age'라는 이름의 정수 상자를 만들고, 25를 넣는다.
String name = "Java"; // 'name'이라는 이름의 문자열 상자를 만들고, "Java"를 넣는다.
  • 선언(Declaration): int age; (상자를 만드는 것)
  • 초기화(Initialization): age = 25; (상자에 값을 처음 넣는 것)

2. 자바의 핵심 자료형 (Data Types)

자바에는 수많은 자료형이 있지만, 실무에서 95% 이상 사용하는 핵심 4가지만 기억하시면 됩니다.

(1) 정수형

  • int (Integer)
    • 설명: 가장 일반적인 정수 (약 ±21억까지 저장)
    • 사용 예시: 나이, 개수, 순서, 등수
  • long (Long Integer)
    • 설명: 아주 큰 정수 (21억을 넘는 숫자)
    • 사용 예시: 연봉, 국가 예산, 유튜브 조회수, 은행 잔고

(2) 실수형

  • double
    • 설명: 소수점이 있는 숫자
    • 사용 예시: 시력(1.5), 세율(0.033), 환율, 몸무게

(3) 논리형

  • boolean
    • 설명: 참(True) 또는 거짓(False) 판별
    • 사용 예시: 합격여부, 로그인 성공여부

(4) 문자열

  • String
    • 설명: 글자들의 집합
    • 사용 예시: 이름, 주소, 이메일, 메시지

💡 선생님의 꿀팁 (주의사항)

  1. long을 쓸 때는 뒤에 L을 붙이세요.
    • 자바는 기본적으로 숫자를 int로 인식합니다. 21억이 넘는 숫자를 적을 때는 L을 붙여서 "이건 큰 숫자야"라고 알려줘야 합니다.
    • 예: long money = 3000000000L;
  2. String은 대문자로 시작합니다.
    • int, long 등은 소문자지만, String은 클래스(Class)이기 때문에 대문자 S로 시작합니다.

3. 실전 예제: 내 연봉 계산기 만들기

백문이 불여일견입니다. 배운 내용을 활용해서 간단한 연봉 계산 프로그램을 만들어보겠습니다. src 폴더에 Main.java 내용을 지우고 아래 코드를 작성해 보세요.

public class Main {
    public static void main(String[] args) {
        // 1. 변수 선언 및 초기화
        String name = "김자바";
        int age = 30;
        
        // 연봉은 단위가 크므로 long 사용 (5,000만 원)
        long salary = 50000000L; 
        
        // 세율은 소수점이 있으므로 double 사용 (15.5%)
        double taxRate = 0.155;

        // 2. 계산하기 (자동 형변환)
        // 정수(long) * 실수(double)의 결과는 실수(double)가 됩니다.
        double taxAmount = salary * taxRate;
        
        // 3. 실수령액 계산 (강제 형변환)
        // 실수를 정수 그릇에 담으려니 에러가 납니다. (int)를 붙여서 소수점을 버립니다.
        long finalSalary = salary - (long)taxAmount;

        // 4. 결과 출력
        System.out.println("=== " + name + "님의 급여 명세서 ===");
        System.out.println("나이: " + age + "세");
        System.out.println("세전 연봉: " + salary + "원");
        System.out.println("예상 세금: " + (long)taxAmount + "원");
        System.out.println("실수령액: " + finalSalary + "원");
    }
}

실행 결과

=== 김자바님의 급여 명세서 ===
나이: 30세
세전 연봉: 50000000원
예상 세금: 7750000원
실수령액: 42250000원

4. 최신 트렌드: 'var' 키워드 (Java 10 이상)

자바가 너무 깐깐하다고 느끼셨나요? "그냥 a = 10 하면 알아서 숫자로 인식하면 안 되나?"라는 생각이 드실 겁니다. 모던 자바(Java 10 이상)부터는 **var**라는 키워드가 도입되어, 컴파일러가 타입을 추론해 줍니다.

// 예전 방식
String message = "Hello";
long bigNumber = 10000000000L;

// 최신 방식 (Type Inference)
var message = "Hello";        // 우측이 문자열이니 message는 String이구나!
var bigNumber = 10000000000L; // 우측에 L이 있으니 bigNumber는 long이구나!

선생님의 조언: 실무에서는 var를 적극적으로 사용하지만, 입문 단계에서는 int, String 같은 타입을 명시적으로 적는 습관을 들이는 것이 좋습니다. 데이터의 크기와 형태를 이해하는 것이 먼저이기 때문입니다.


5. 자주 하는 실수 (Error Case)

초보 시절 가장 많이 겪는 에러 두 가지를 미리 알려드립니다.

  1. 변수 이름 중복
    int a = 10;
    int a = 20; // 에러! 'a'라는 이름의 상자는 이미 있습니다.
    a = 20;     // 이건 가능 (기존 상자의 내용물 교체)
    
  2. 초기화 없이 사용
    int score;
    System.out.println(score); // 에러! 빈 상자는 출력할 수 없습니다.
    

다음 강의 예고

오늘 우리는 데이터를 저장하고 계산하는 방법을 배웠습니다. 하지만 아직은 우리가 코드에 적어놓은 값(50000000)으로만 계산이 되죠.

다음 **[3강]**에서는 **사용자가 키보드로 직접 값을 입력하는 방법(Scanner)**을 배워보겠습니다. "연봉을 입력하세요"라는 질문에 숫자를 입력하면 즉시 계산해 주는, 진짜 상호작용하는 프로그램을 만들게 될 것입니다.

👉 3강 바로가기: 컴퓨터와 대화하기, 입력과 출력