2장. 변수와 자료형
변수의 개념
변수란?
변수(Variable)는 데이터를 저장하는 메모리 공간에 붙인 이름입니다. 프로그램에서 데이터를 임시로 저장하고 나중에 사용하기 위해 변수를 사용합니다.
변수의 특징
- 변수는 이름(식별자)을 가지고 있습니다
- 변수는 특정 타입의 데이터만 저장할 수 있습니다
- 변수에 저장된 값은 변경 가능합니다
- 변수는 선언 후에 사용할 수 있습니다
변수 선언 방법
// 기본 형식
자료형 변수명;
// 선언과 동시에 초기화
자료형 변수명 = 값;
// 여러 변수 동시 선언
자료형 변수명1, 변수명2, 변수명3;
변수명 규칙 (식별자 규칙)
- 영문자, 숫자, 언더스코어(_), 달러 기호($)만 사용 가능
- 숫자로 시작할 수 없음
- Java 예약어는 사용 불가 (if, for, class 등)
- 대소문자를 구분함
- 의미 있는 이름을 사용하는 것이 좋음
올바른 변수명 예시
int age;
String userName;
double totalPrice;
boolean isActive;
잘못된 변수명 예시
int 2age; // 숫자로 시작 불가
String user-name; // 하이픈 사용 불가
int class; // 예약어 사용 불가
변수 사용 예제
public class VariableExample {
public static void main(String[] args) {
// 변수 선언
int number;
// 변수에 값 할당
number = 10;
// 변수 사용
System.out.println("숫자: " + number);
// 값 변경
number = 20;
System.out.println("변경된 숫자: " + number);
}
}
기본 자료형 (Primitive Data Types)
Java는 8가지 기본 자료형을 제공합니다. 기본 자료형은 실제 값을 저장하며, 메모리에 직접 저장됩니다.
정수형 (Integer Types)
| 자료형 | 크기 | 범위 | 설명 |
|---|---|---|---|
byte |
1 byte | -128 ~ 127 | 가장 작은 정수형 |
short |
2 bytes | -32,768 ~ 32,767 | 작은 정수형 |
int |
4 bytes | -2,147,483,648 ~ 2,147,483,647 | 가장 많이 사용하는 정수형 |
long |
8 bytes | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | 큰 정수형 |
int age = 25;
long population = 1000000000L; // long은 뒤에 L 또는 l을 붙임
byte score = 100;
short year = 2024;
실수형 (Floating-Point Types)
| 자료형 | 크기 | 범위 | 설명 |
|---|---|---|---|
float |
4 bytes | 약 ±3.4×10³⁸ | 단정밀도 실수 |
double |
8 bytes | 약 ±1.7×10³⁰⁸ | 배정밀도 실수 (기본값) |
double height = 175.5; // double이 기본값
float weight = 70.5f; // float은 뒤에 f 또는 F를 붙임
double pi = 3.141592653589793;
문자형 (Character Type)
| 자료형 | 크기 | 범위 | 설명 |
|---|---|---|---|
char |
2 bytes | 0 ~ 65,535 (유니코드) | 단일 문자 |
char grade = 'A';
char korean = '가';
char unicode = '\u0041'; // 유니코드로 'A' 표현
논리형 (Boolean Type)
| 자료형 | 크기 | 값 | 설명 |
|---|---|---|---|
boolean |
1 bit | true 또는 false |
논리값 |
boolean isStudent = true;
boolean isActive = false;
boolean result = (10 > 5); // true
기본값 (Default Values)
클래스의 멤버 변수는 자동으로 기본값이 할당됩니다:
byte,short,int,long:0float,double:0.0char:'\u0000'(null 문자)boolean:false
주의: 지역 변수(메서드 내부 변수)는 기본값이 없으므로 반드시 초기화해야 합니다!
참조 자료형 개요 (Reference Data Types)
참조 자료형이란?
참조 자료형은 객체의 주소(참조)를 저장하는 자료형입니다. 기본 자료형과 달리 실제 값이 아닌 메모리 주소를 저장합니다.
참조 자료형의 종류
- 클래스 (Class)
String: 문자열- 사용자 정의 클래스
- 배열 (Array)
- 같은 타입의 여러 데이터를 저장
- 인터페이스 (Interface)
String 클래스
가장 많이 사용하는 참조 자료형입니다.
String name = "홍길동";
String message = "안녕하세요";
String empty = ""; // 빈 문자열
기본 자료형 vs 참조 자료형
| 구분 | 기본 자료형 | 참조 자료형 |
|---|---|---|
| 저장 내용 | 실제 값 | 주소(참조) |
| 메모리 위치 | 스택(Stack) | 힙(Heap) |
| 기본값 | 있음 | null |
| 예시 | int, double, boolean |
String, 배열, 클래스 |
// 기본 자료형
int num1 = 10;
int num2 = num1; // 값 복사
num2 = 20; // num1은 여전히 10
// 참조 자료형
String str1 = "Hello";
String str2 = str1; // 주소 복사 (같은 객체 참조)
형 변환 (Type Casting)
형 변환은 한 자료형의 값을 다른 자료형으로 변환하는 것입니다.
자동 형 변환 (Automatic Type Conversion / Promotion)
작은 자료형에서 큰 자료형으로 변환할 때 자동으로 이루어집니다.
자동 형 변환 규칙
byte → short → int → long → float → double
↓
char
int num = 10;
double result = num; // int가 double로 자동 변환
// result = 10.0
long bigNum = 100;
float decimal = bigNum; // long이 float로 자동 변환
강제 형 변환 (Explicit Type Casting)
큰 자료형에서 작은 자료형으로 변환할 때는 명시적으로 변환해야 합니다. 데이터 손실이 발생할 수 있습니다.
// 형식: (변환할_자료형) 값
double pi = 3.14159;
int intPi = (int) pi; // 3 (소수점 이하 손실)
long bigNum = 1000000L;
int smallNum = (int) bigNum; // 강제 변환
int num = 300;
byte smallByte = (byte) num; // 데이터 손실 가능 (byte 범위 초과)
주의사항
- 데이터 손실: 큰 타입에서 작은 타입으로 변환 시 값이 잘릴 수 있음
- 범위 확인: 변환 후 값이 해당 타입의 범위를 벗어나지 않는지 확인
- 참조 자료형: 참조 자료형 간 변환은 상속 관계에서만 가능
형 변환 예제
public class TypeConversion {
public static void main(String[] args) {
// 자동 형 변환
int intValue = 100;
double doubleValue = intValue; // 자동 변환
System.out.println(doubleValue); // 100.0
// 강제 형 변환
double pi = 3.14159;
int intPi = (int) pi;
System.out.println(intPi); // 3
// 문자와 숫자 변환
char ch = 'A';
int ascii = ch; // 자동 변환: 65
System.out.println(ascii);
int num = 66;
char character = (char) num; // 강제 변환: 'B'
System.out.println(character);
}
}
상수 (Constants) - final 키워드
상수란?
상수(Constant)는 한 번 값을 할당하면 변경할 수 없는 변수입니다. Java에서는 final 키워드를 사용하여 상수를 만듭니다.
final 키워드 사용법
final 자료형 상수명 = 값;
상수 명명 규칙
일반적으로 대문자와 언더스코어(_)를 사용합니다.
final int MAX_SIZE = 100;
final double PI = 3.14159;
final String COMPANY_NAME = "ABC Corp";
상수의 특징
- 값 변경 불가: 한 번 할당된 값은 변경할 수 없음
- 초기화 필수: 선언 시 반드시 초기화해야 함
- 의미 있는 값: 프로그램에서 자주 사용하는 고정값에 사용
상수 사용 예제
public class ConstantExample {
// 클래스 상수 (static final)
public static final double PI = 3.14159;
public static final int MAX_STUDENTS = 100;
public static void main(String[] args) {
// 지역 상수
final int MIN_AGE = 18;
final String MESSAGE = "환영합니다";
// 상수 사용
double radius = 5.0;
double area = PI * radius * radius;
System.out.println("원의 넓이: " + area);
System.out.println(MESSAGE);
// 오류: 상수는 변경할 수 없음
// MIN_AGE = 20; // 컴파일 오류!
}
}
상수의 장점
- 가독성 향상: 의미 있는 이름으로 코드 이해가 쉬움
- 유지보수 용이: 값 변경 시 한 곳만 수정하면 됨
- 오류 방지: 실수로 값이 변경되는 것을 방지
변수와 자료형 종합 예제
public class DataTypeExample {
public static void main(String[] args) {
// 정수형
int age = 25;
long population = 7800000000L;
// 실수형
double height = 175.5;
float weight = 70.5f;
// 문자형
char grade = 'A';
// 논리형
boolean isStudent = true;
// 참조 자료형 (String)
String name = "홍길동";
// 상수
final double PI = 3.14159;
final int MAX_SCORE = 100;
// 출력
System.out.println("이름: " + name);
System.out.println("나이: " + age);
System.out.println("키: " + height + "cm");
System.out.println("학생 여부: " + isStudent);
System.out.println("원주율: " + PI);
}
}
연습 문제
- 변수 선언 및 출력
- 이름, 나이, 키, 몸무게를 변수로 선언하고 출력하는 프로그램을 작성하세요.
- 형 변환 연습
- double 타입의 값을 int로 변환하고, int 타입의 값을 double로 변환하는 예제를 작성하세요.
- 상수 사용
- 원의 반지름을 상수로 선언하고, 원의 넓이와 둘레를 계산하는 프로그램을 작성하세요.
- 다양한 자료형
- 정수, 실수, 문자, 논리값, 문자열을 모두 사용하는 프로그램을 작성하세요.
다음 장 예고
다음 장에서는 연산자(산술, 비교, 논리 연산자 등)와 표현식에 대해 학습합니다.
'BackEnd > Java' 카테고리의 다른 글
| 5장. 배열과 문자열 (0) | 2025.12.30 |
|---|---|
| 4장. 제어문 (0) | 2025.12.30 |
| 3장. 연산자 (0) | 2025.12.29 |
| 1장. Java 시작하기 (0) | 2025.12.26 |
| 0장. VSCode에 자바 설치하기 (0) | 2025.12.26 |