본문으로 건너뛰기
Java 기초집LESSON 04

변수, 자료형, 타입 변환과 값의 범위

난이도입문 → 초급
예상 시간35분
선수지식이전 강의

4강. 변수, 자료형, 타입 변환과 값의 범위

1. 이번 강의에서 해결할 문제​

프로그램은 플레이어 이름, 점수, 이동 속도, 게임 종료 여부를 실행 중에 기억해야 합니다. 하지만 Java에서는 이름만 만들 수 없고 그 이름이 어떤 종류의 값을 다룰지 먼저 선언해야 합니다. 타입을 잘못 고르면 소수점이 사라지거나, 너무 큰 점수가 범위를 벗어나거나, 아예 컴파일되지 않습니다.

2. 학습 목표​

3. 핵심 개념​

변수와 타입이란 무엇인가​

변수는 프로그램이 나중에 다시 사용할 값에 붙인 이름입니다. Java 변수에는 타입이 함께 선언되며, 그 타입에 맞는 값만 대입할 수 있습니다.

int score; // 선언: score라는 int 변수를 준비한다.
score = 120; // 대입: 준비한 변수에 120을 저장한다.

int score = 120;처럼 선언과 첫 대입을 한 줄에 쓰는 것을 초기화라고 합니다. 초기화하지 않은 지역 변수를 읽으면 컴파일 오류가 나므로, 사용할 수 있는 첫 값을 명확히 지정하는 습관이 중요합니다.

자주 쓰는 자료형​

타입뜻과 예시어울리는 데이터주의할 점
int소수점 없는 32비트 정수 120점수, 목숨, 아이템 개수약 -21억~21억 범위를 벗어나면 안 됩니다.
long더 넓은 64비트 정수 3_900_000_000L누적 점수, 큰 식별 숫자정수 리터럴 뒤에 L을 붙입니다.
double소수점이 있는 수 2.5이동 속도, 시간, 평균많은 소수를 근삿값으로 표현합니다.
booleantrue 또는 false게임 종료·보상 가능 여부조건문에서 직접 사용할 수 있습니다.
String"Seokhyeon" 같은 문자열이름, 직업, 안내 문장기본형이 아닌 참조형이며 대문자 S로 씁니다.

기본형인 int, long, double, boolean 변수는 해당 종류의 값을 표현합니다. String 변수는 문자열 객체를 참조합니다. 지금은 메모리 세부 구조보다 숫자 계산과 글자 처리에 허용되는 연산이 다르다는 점이 중요합니다. 문자열 내용 비교에는 이후 equals()를 사용하며 ==로 내용을 비교하지 않습니다.

타입은 잘못된 값을 일찍 막습니다​

int lives = 3.5; // 컴파일 오류: double 값을 int에 바로 넣을 수 없다.

소수점이 있는 3.5를 int에 넣으면 .5를 어떻게 처리할지 알 수 없고 정보가 사라집니다. Java는 이런 축소 변환을 자동으로 허용하지 않습니다. (int) 3.5처럼 명시하면 3이 되지만 반올림이 아니라 소수 부분을 버리는 동작입니다. 변환 문법을 쓸 수 있다는 사실보다 손실을 허용해도 되는지 먼저 판단해야 합니다.

반대로 int에서 double로 범위가 넓어지는 변환은 자동입니다.

int score = 120;
double displayedScore = score; // 120.0으로 확대 변환

의미 있는 이름은 단위와 목적을 알려 줍니다​

x보다 playerScore, time보다 elapsedSeconds가 읽기 쉽습니다. Java 지역 변수는 보통 첫 단어를 소문자로 시작하고 다음 단어를 대문자로 잇는 camelCase를 사용합니다. 이름만 읽고도 어떤 값을 왜 저장했는지 알 수 있어야 합니다.

4. 가장 작은 예제로 시작하기​

먼저 다섯 종류의 값을 한 번씩 만들어 출력합니다.

src/PlayerState.java
public class PlayerState {
public static void main(String[] args) {
int score = 120;
double moveSpeed = 2.5;
boolean isGameOver = false;
String playerName = "Seokhyeon";

System.out.println("이름: " + playerName);
System.out.println("점수: " + score);
System.out.println("이동 속도: " + moveSpeed);
System.out.println("게임 종료: " + isGameOver);
}
}

코드 한 줄씩 이해하기​

  1. int score = 120;은 소수점이 필요 없는 점수를 선언과 동시에 초기화합니다.
  2. double moveSpeed = 2.5;는 소수점이 필요한 이동 속도를 저장합니다.
  3. boolean isGameOver = false;는 게임 종료 여부를 두 상태로 표현합니다.
  4. String playerName = "Seokhyeon";은 글자 데이터를 참조하는 변수를 만듭니다.
  5. +는 문자열 옆에서 값을 사람이 읽을 문장으로 이어 붙입니다.

score를 200으로 바꾸면 점수 출력만 200으로 달라집니다. isGameOver를 true로 바꾸면 마지막 출력이 바뀌며 이후 if (isGameOver) 조건과 직접 연결할 수 있습니다.

5. 타입 변환과 실행 결과 추적​

이번에는 큰 누적 점수와 평균을 계산하며 정수·실수 연산의 차이를 확인합니다.

src/GameStats.java 작성​

실행 환경: 코드 편집기

실행 위치: C:\dev\game-records

실행 전 확인: 같은 이름의 기존 파일이 있다면 덮어쓰기 전에 Git diff와 이번 강의 변경 범위를 확인합니다.

대상 파일: src/GameStats.java

src/GameStats.java
public class GameStats {
public static void main(String[] args) {
int matches = 3;
long totalScore = 3_900_000_000L;
double averageScore = (double) totalScore / matches;
boolean qualified = averageScore >= 1_000_000_000.0;
String playerName = "Alice";

int integerAverage = 10 / 3;
double preciseAverage = 10.0 / 3;

System.out.println(playerName + " 평균: " + averageScore);
System.out.println("랭킹 조건 충족: " + qualified);
System.out.println("int 최대값: " + Integer.MAX_VALUE);
System.out.println("정수 나눗셈: " + integerAverage);
System.out.println("실수 나눗셈: " + preciseAverage);
}
}

PowerShell에서 컴파일·실행​

실행 환경: Windows PowerShell

실행 위치: C:\dev\game-records

실행 전 확인: java -version과 javac -version이 선택한 LTS JDK를 가리키고, 소스 파일명이 public 클래스명과 일치하는지 확인합니다.

대상: 이 강의의 .java 파일, out의 class 파일과 명시된 출력 파일

Windows PowerShell
Set-Location C:\dev\game-records
javac -d out .\src\GameStats.java
java -cp out GameStats

예상 결과의 핵심:

Alice 평균: 1.3E9
랭킹 조건 충족: true
int 최대값: 2147483647
정수 나눗셈: 3
실수 나눗셈: 3.3333333333333335

3_900_000_000L의 밑줄은 읽기 편하게 할 뿐 값에는 영향을 주지 않고, L은 long 리터럴임을 표시합니다. 이 값은 int 최대값보다 크므로 int에 저장할 수 없습니다.

(double) totalScore는 나누기 전에 피연산자 하나를 실수로 바꿉니다. 따라서 평균의 소수 부분을 보존합니다. 10 / 3은 양쪽이 int라 결과도 3이며, 그 결과를 나중에 double 변수에 넣어도 사라진 소수 부분은 돌아오지 않습니다. 10.0 / 3은 처음부터 실수 나눗셈입니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

10. 다음 강의 연결​

값을 타입에 맞게 저장하고 변환할 수 있게 되었습니다. 다음 강의에서는 이 값에 산술·비교·논리 연산을 적용해 보너스 점수와 랭킹 조건을 계산합니다.

MINI QUIZ

변수, 자료형, 타입 변환과 값의 범위 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“변수, 자료형, 타입 변환과 값의 범위”에서 다음 단계로 넘어가기 전에 확인할 핵심은 무엇인가요?
  2. 문제 2“변수, 자료형, 타입 변환과 값의 범위” 실습 중 ‘String을 string으로 작성하기’ 상황을 발견했습니다. 본문과 일치하는 설명은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

4강. 변수, 자료형, 타입 변환과 값의 범위 미완료 상태