티스토리 뷰

Language/Java

[JAVA] 변수와 자료형

토랑 2025. 1. 1. 19:38

변수란?

  • 변수는 데이터를 저장하고 관리하기 위한 컨테이너와 같은 역할
  • 프로그램이 실행되는 동안 특정한 값을 저장하고 조작할 수 있게 해주는데, 이 과정에서 값들의 자료형들을 같이 선언해주는 것

변수의 종류

자바에서의 변수는 지역 변수, 인스턴스 변수, 클래스 변수로 이루어져 있다

1️⃣지역 변수(Local Variables)

  • 지역 변수는 메서드의 내부에 선언되고 사용되어짐
  • 메서드가 종료되면 메모리에서 사라진다
  • 반드시 초기화 후 사용해야 한다
public void method() {
    int x = 5; // 지역 변수
    System.out.println(x);
}

2️⃣인스턴스 변수(Instance Variables)

  • 클래스의 객체마다 독립적으로 존재하는 변수
  • 객체가 생성될 때마다 초기화되고, 객체가 사라지면 메모리에서 해제
class Person {
    String name; // 인스턴스 변수
}

3️⃣클래스 변수(Static Variables)

  • static키워드를 사용해 선언
  • 전역변수와 유사하게 동작
  • 클래스 로드 시 생성, 모든 객체가 공유
class Person {
    static int population; // 클래스 변수
}

전역 변수와의 차이점

  • 전역변수는 프로그램 전체에서 접근 가능한 변수

전역변수와 클래스 변수의 차이

자바에서 전역적인 접근 구현법

1️⃣ static키워드 활용

class Settings {
    public static String appName = "MyApp";
}

public class Main {
    public static void main(String[] args) {
        System.out.println(Settings.appName); // 출력: MyApp
    }
}

2️⃣ 싱글톤 패턴 활용

  • 싱글톤(Singleton)은 하나의 객체를 프로그램 전체에서 공유할 수 있는 패턴
class GlobalSettings {
    private static GlobalSettings instance;
    public String appName;

    private GlobalSettings() {
        appName = "MyApp";
    }

    public static GlobalSettings getInstance() {
        if (instance == null) {
            instance = new GlobalSettings();
        }
        return instance;
    }
}

public class Main {
    public static void main(String[] args) {
        GlobalSettings settings = GlobalSettings.getInstance();
        System.out.println(settings.appName); // 출력: MyApp
    }
}

자바에서 클래스 변수를 사용하는 이유

  • 자바는 객체 지향 언어로, 전역 변수 사용을 지양하고 캡슐화를 선호하기 때문이다

자료형

  • 자료형은 변수를 선언할 때 같이 선언하게 되는 변수의 타입을 말한다
  • 자바의 자료형은 기본형참조형으로 구성되어진다

기본 자료형

  • 자바의 간단한 데이터 타입
  • 값을 직접 저장
  • 메모리가 스택(Stack)영역에 저장됨
int a = 5;
double pi = 3.14;
boolean isTrue = true;

기본 자료형
기본 자료형의 메모리 형식

참조 자료형

  • 데이터가 저장된 메모리 주소를 저장
  • 실제 데이터는 힙(Heap) 영역에 저장되며, 참조 변수는 스택(Stack) 영역에 주소를 저장합니다.
class Main {
    public static void main(String[] args) {
        // 참조 자료형: 클래스
        String str = "Hello, World!";
        System.out.println("문자열: " + str);

        // 참조 자료형: 배열
        int[] numbers = {1, 2, 3, 4};
        System.out.println("배열 첫 번째 값: " + numbers[0]);

        // 참조 자료형: 객체
        Person person = new Person("Alice", 25);
        System.out.println("사람 이름: " + person.name + ", 나이: " + person.age);
    }
}

class Person {
    String name;
    int age;

    Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

참조 자료형
참조 자료형의 메모리 형식

참조형 변수 사용시 주의점

1️⃣ null 값 가능성

  • 참조형 변수는 객체를 가리키지 않을 수 있고, 이 경우 null 값이 저장된다
  • null 값을 사용하려고 하면 NullPointerException이 발생할 수 있다
String name = null;
System.out.println(name.length()); // 오류 발생: NullPointerException
  • 오류를 방지하기 위해서는 아래와 같은 방식으로 확인후 접근해야 함
if( name != null )

 

2️⃣ 객체 비교

  • == 연산자를 사용하면 주소값을 비교하므로, 내용 비교를 위해 equals( ) 메소드를 사용해야 한다
String str1 = "Hello";
String str2 = new String("Hello");
System.out.println(str1 == str2); // false (주소 비교)
System.out.println(str1.equals(str2)); // true (값 비교)

 

'Language > Java' 카테고리의 다른 글

[JAVA] 인터페이스와 추상 클래스  (0) 2025.01.07
[JAVA] 클래스와 객체  (0) 2025.01.06
[JAVA] 문자열 처리  (1) 2025.01.04
[JAVA] 배열과 다차원 배열  (1) 2025.01.04
[JAVA] 연산자와 제어문  (0) 2025.01.02
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함