🗄️ Backend/Java

JAVA 변수와 데이터 타입: 개념부터 실습까지

hjwjo 2024. 10. 10. 09:48

자바(Java)에서 변수와 데이터 타입은 프로그래밍의 기초 중 하나입니다. 이 글에서는 변수 선언과 초기화, 그리고 자바에서 사용되는 다양한 데이터 타입에 대해 알아보겠습니다. 특히 코드 예시와 함께 설명하여, 누구나 쉽게 이해하고 실습할 수 있도록 구성했습니다.


1. 변수란?

변수란 프로그램이 실행되는 동안 값을 저장하는 메모리 공간을 의미합니다. 변수의 값은 프로그램 실행 중에 언제든지 바뀔 수 있으며, 각 변수는 하나의 값과 특정 데이터 타입을 가집니다.

  • 변수의 특징
    • 하나의 값만 저장할 수 있음.
    • 한 가지 타입의 값만 저장할 수 있음.
    • 변수에 값을 저장하는 행위를 초기화라고 부릅니다.

변수 선언 방법

<데이터타입> <변수이름>;
  • 같은 타입의 변수는 콤마(,)를 이용해 한꺼번에 선언할 수 있습니다.
  • 예시:
    int a, b, c;

변수 선언과 초기화 예시

int num = 10; // 변수 선언과 초기화
System.out.println(num); // 10

2. 데이터 타입

자바에서 변수는 다양한 데이터 타입을 가질 수 있습니다. 기본적으로 크게 정수형, 실수형, 논리형, 문자형 데이터 타입으로 나뉩니다.

정수형 데이터 타입

타입 크기 값의 범위
byte 1바이트 -128 ~ 127
short 2바이트 -32,768 ~ 32,767
int 4바이트 -2,147,483,648 ~ 2,147,483,647
long 8바이트 매우 큰 값 (L을 붙임)

실수형 데이터 타입

타입 크기 설명
float 4바이트 소수점 이하 7자리 정도의 값 저장 (F를 붙임)
double 8바이트 소수점 이하 15자리 정도의 값 저장

논리형 데이터 타입

타입 크기 설명
boolean 1바이트 true 또는 false 저장

문자형 데이터 타입

타입 크기 설명
char 2바이트 한 글자를 저장 (유니코드 지원)
String 그때그때 다름 문자열 저장 (큰 따옴표로 표현)

3. 코드 예시: 데이터 타입 활용

public class DataTypeEX {
    public static void main(String[] args) {
        // 정수형 변수 선언 및 초기화
        byte a = 127;
        short b = 32767;
        int c = 2147483647;
        long d = 123123123123L; // long 타입 값 저장 시 'L' 필요

        // 실수형 변수 선언 및 초기화
        float f = 3.14F; // float 타입 값 저장 시 'F' 필요
        double d1 = 3.141592653;

        // 논리형 변수 선언 및 초기화
        boolean bool = true;

        // 문자형 변수 선언 및 초기화
        char ch = 'A';
        String str = "Hello, Java!";

        System.out.println("정수형 값: " + a + ", " + b + ", " + c + ", " + d);
        System.out.println("실수형 값: " + f + ", " + d1);
        System.out.println("논리형 값: " + bool);
        System.out.println("문자형 값: " + ch + ", " + str);
    }
}

4. 변수의 범위와 유효성

변수는 선언된 블록(중괄호 {}) 안에서만 유효합니다. 이를 변수의 스코프(Scope)라고 부릅니다.

변수 범위 예시

public class VariableScope {
    public static void main(String[] args) {
        int num = 100;
        if (true) {
            int num1 = 10; // 이 변수는 if 블록 내에서만 유효
            System.out.println(num1); // 출력 가능
        }
        // System.out.println(num1); // 에러 발생: num1은 if 블록 밖에서 사용 불가
    }
}

5. 형 변환(Type Casting)

자바에서는 데이터 타입이 다른 값들 간의 변환이 필요할 때가 있습니다. 이를 형 변환이라고 하며, 자동 형 변환과 명시적 형 변환으로 나눕니다.

1) 자동 형 변환 (Promotion)

작은 크기의 데이터 타입을 큰 크기의 데이터 타입으로 변환할 때는 자바가 자동으로 형 변환을 처리합니다.

byte a = 10;
int b = a; // byte -> int 자동 형 변환

2) 명시적 형 변환 (Casting)

큰 크기의 데이터 타입을 작은 크기의 데이터 타입으로 변환할 때는 명시적으로 형 변환을 지정해야 합니다.

int i = 100;
byte b = (byte) i; // 명시적 형 변환

형 변환 예시 코드

public class CastingEx01 {
    public static void main(String[] args) {
        int i = 70;
        char c = (char) i; // 명시적 형 변환
        System.out.println(c); // 출력: 'F'
    }
}

6. 연산과 형 변환

자바에서는 연산 시에도 형 변환이 일어납니다. 작은 데이터 타입들 간의 연산 결과는 int 타입이 기본입니다. 예를 들어 byte + byte 연산 결과는 int로 변환됩니다.

연산 시 형 변환 예시

public class CastingEx03 {
    public static void main(String[] args) {
        char c = 'A';
        int i = 2;

        System.out.println(c + i); // 출력: 67 (char 'A'는 65이므로)

        double d = 3.14;
        System.out.println(i + d); // 출력: 5.14 (int와 double 연산 결과는 double)
    }
}

7. 정리

  • 변수는 데이터를 저장하는 공간이며, 값이 실행 중에 변경될 수 있습니다.
  • 자바는 여러 데이터 타입을 제공하며, 변수는 한 가지 타입만 저장할 수 있습니다.
  • 형 변환은 데이터 타입 간의 변환을 의미하며, 자동 형 변환과 명시적 형 변환으로 나뉩니다.
  • 연산 시에는 작은 타입끼리의 연산도 int 타입으로 변환됩니다.