Chapter 02. 변수 (Variable)

Chapter 02. 변수 (Variable)

1. 변수(Variable)란?

값을 저장할 수 있는 메모리상의 공간

변수란, 단 하나의 값만 저장할 수 있는 메모리 공간

int age;        // 변수 선언
age = 25;       // 값 저장 (초기화)
int score = 90; // 선언과 동시에 초기화

변수 초기화

  • 초기화: 변수를 사용하기 전에 처음으로 값을 저장하는 것
  • 메모리에 **쓰레기값(garbage value)**이 남아 있을 수 있으므로 반드시 초기화 필요

2. 변수 명명규칙

규칙설명예시
대소문자 구분길이 제한 없음Truetrue
예약어 사용 불가키워드 사용 불가int, class
숫자로 시작 불가첫 글자는 문자top10 ✓, 7up
특수문자_$만 허용$harp ✓, S#arp

권장 명명법

대상규칙예시
클래스첫 글자 대문자StringBuffer
변수/메서드첫 글자 소문자 (camelCase)lastName
상수모두 대문자, _로 구분MAX_VALUE

3. 자료형(Data Type)

기본형 vs 참조형

구분설명종류
기본형 (primitive)실제 값 저장8개
참조형 (reference)객체 주소 저장기본형 제외 모든 타입

기본형 8가지

┌─────────────────────────────────────────────────┐
│              기본형 (Primitive Type)              │
├──────────┬──────────┬──────────┬───────────────┤
│  논리형   │  문자형   │  정수형   │    실수형      │
├──────────┼──────────┼──────────┼───────────────┤
│ boolean  │   char   │  byte    │    float      │
│  (1)     │   (2)    │  short   │    double     │
│          │          │  int     │               │
│          │          │  long    │               │
└──────────┴──────────┴──────────┴───────────────┘
                     (괄호 안은 byte 수)

기본형 크기와 범위

타입크기범위
boolean1 bytetrue, false
char2 byte0 ~ 65,535 (유니코드)
byte1 byte-128 ~ 127
short2 byte-32,768 ~ 32,767
int4 byte약 ±21억
long8 byte약 ±922경
float4 byte정밀도 7자리
double8 byte정밀도 15자리

n비트로 표현 가능한 범위: -2^(n-1) ~ 2^(n-1)-1


4. 상수와 리터럴

final int MAX_SPEED = 100;  // 상수: 한 번 저장하면 변경 불가
int year = 2024;            // 2024가 리터럴
용어정의
변수하나의 값을 저장하기 위한 공간
상수값을 한 번만 저장할 수 있는 공간 (final)
리터럴그 자체로 값을 의미 (123, 3.14, ‘A’)

리터럴 접미사

타입접미사예시
longL100L
floatf3.14f
doubled (생략 가능)3.14d

진법 접두사

진법접두사예시
2진수0b0b0101
8진수0077
16진수0x0xFF

5. 형식화된 출력 - printf()

지시자설명예시
%d10진 정수123
%x, %X16진 정수7b, 7B
%o8진 정수173
%f부동소수점3.140000
%e지수 표현3.14e+00
%c문자A
%s문자열Hello
%bbooleantrue

6. 진법

진법 변환

10진수 → 2진수: 2로 나누기 반복, 나머지를 역순으로
2진수 → 10진수: 각 자리수 × 2^n 합산

2진수 → 8진수: 3자리씩 묶기 (2³ = 8)
2진수 → 16진수: 4자리씩 묶기 (2⁴ = 16)

음수 표현 - 2의 보수법

양수 5:  0101
        ↓ 1의 보수 (비트 반전)
        1010
        ↓ +1 (2의 보수)
음수 -5: 1011

MSB(Most Significant Bit): 최상위 비트, 0이면 양수, 1이면 음수


7. 문자형 (char)

문자와 유니코드

char ch = 'A';     // 실제로는 65(유니코드) 저장
char ch2 = 65;     // 위와 동일
int code = (int)ch; // 유니코드  확인: 65

특수 문자

이스케이프의미
\t
\n줄바꿈
\\역슬래시
\'작은따옴표
\"큰따옴표

인코딩 방식

방식특징
ASCII7bit, 128개 문자
UTF-162byte 고정, Java 내부 사용
UTF-81~4byte 가변, 웹 표준

8. 정수형 오버플로우

최대값 + 1 → 최소값
최소값 - 1 → 최대값
byte b = 127;   // byte 최대값
b++;            // 오버플로우 발생
// b = -128     // 최소값으로 순환

정수형 선택: 기본적으로 int 사용 (CPU가 가장 효율적으로 처리) 약 ±20억 초과 시 long 사용


9. 실수형

float vs double

항목floatdouble
크기4 byte8 byte
정밀도7자리15자리
기본형-✓ (기본)

실수형 저장 구조

float (32bit):  S(1) + E(8) + M(23)
double (64bit): S(1) + E(11) + M(52)

S: 부호 (0=양수, 1=음수)
E: 지수 (Exponent)
M: 가수 (Mantissa) - 정밀도 결정

오버플로우 vs 언더플로우

현상결과
오버플로우무한대 (Infinity)
언더플로우0 (양의 최소값보다 작은 값)

요약

항목핵심
변수값을 저장하는 메모리 공간, 초기화 필수
기본형8가지 (boolean, char, byte, short, int, long, float, double)
참조형객체 주소 저장, null 가능
상수final 키워드, 변경 불가
리터럴값 자체, 접미사로 타입 구분 (L, f, d)
정수형int 기본, 오버플로우 시 순환
실수형double 기본, 정밀도가 핵심