Programming/Java

[JAVA 기초] 01. 변수

mar1po5a 2025. 2. 2. 23:38

변수는 데이터를 저장하고 활용하기 위해 사용하게 된다.

Python과 달리 Java에서는 반드시 변수에 타입을 지정하도록 요구하는데,

지정해둔 타입과 할당된 데이터의 타입이 불일치하면 오류가 발생한다.

 

변수 선언이란, 변수의 이름과 타입을 지정하는 것을 의미한다.

변수를 선언하면, 메모리 공간이 할당되고 해당 변수를 사용할 수 있게 된다.

// 변수 선언
int a;
long b;
String c = "java"; // 변수를 선언하면서 바로 값을 넣어줌.

Java에서 변수는 크게 기본형 변수참조형 변수 두 가지로 나뉜다.

1. 기본형 변수

주소가 아닌 데이터 고유의 값으로 저장되며, 고정된 크기를 가짐.

1-1. 숫자형

(1) 정수형 : 소수점이 없는 숫자를 저장하는데 사용됨.

* bit : binary digit, 2진수( 0,1 )

타입 크기 표현 가능한 범위 특징
byte 1byte = 8bit -128 ~ 127 메모리를 절약해야 할 때 사용.
short 2byte = 16bit -32,768 ~ 32,767 잘 사용되지 않음.
int 4byte = 32bit 약 21억 ~ 21억 기본 정수형(default)
long 8byte = 64bit 매우 큰 값까지 가능. 숫자 뒤에 L을 붙여야 함.

 

(2) 실수형 : 소수점이 포함된 숫자를 저장하는데 사용됨.

타입 크기 특징
float 4byte 숫자 뒤에 F를 붙여야 함.
double 8byte 기본 실수형(default)

 

1-2. 문자형 : 한 개의 문자를 저장할 수 있음.

타입 크기 특징
char 2byte 내부적으로는 숫자로 저장되며 ASCII 또는 유니코드 값을 가짐.

 

1-3. 논리형 : 참(True) 또는 거짓(False)만을 저장할 수 있음.

타입 크기
boolean 1byte

 


2. 참조형 변수

 

데이터가 저장된 메모리의 주소값으로 저장. 이들은 고정된 크기값을 갖지 않음.

 

2-1. String(문자열)

2-2. Array(배열)

2-3. Class(클래스)

2-4. Collection(컬렉션) : 여러 개의 데이터를 저장하고 관리하는 도구 (ArrayList, HashMap 등)

2-5. Wrapper(래퍼) 클래스 : 기본형 데이터를 객체로 바꿔주는 도구 (Integer, Double 등)


3. 캐스팅

변수의 타입을 변환하는 과정.

3-1. 자동 캐스팅(묵시적 변환)

작은 크기의 데이터를 큰 크기의 변수에 저장할 때 자동으로 변환.

int small = 100;
long big = small; // 자동 캐스팅 (int -> long)

 

3-2. 강제 캐스팅(명시적 변환)
큰 크기의 데이터를 작은 크기의 변수에 저장할 때 강제로 변환.

※ 데이터 손실의 가능성이 있음, 저장하려는 작은 쪽에서 타입을 지정해 사용.

double big = 3.14;
int small = (int) big; // 소수점 이하 버림

4. 전역 변수와 지역 변수

4-1. 지역(Local) 변수

특정 메서드 또는 블록 내부에서 선언되며, 해당 블록을 벗어나면 사라진다.

void printLocal() {
    int local = 10; // 지역 변수
    System.out.println(local);
}

 

4-2. 전역(Global) 변수

클래스 내부에서 선언되지만 메서드 밖에서 선언되며, 객체가 존재하는 동안 유지된다.

class GlobalVar {
    String name; // 전역 변수 (멤버 변수)

    void setName(String newName) {
        name = newName;
    }
}