Java - 변수 variable

최고요·2023년 5월 8일
1
post-thumbnail

변수(variable) 란 ?

프로그래밍 언어에서 값을 저장하고 참조하기 위한 메모리 공간에 대한 이름입니다.
자바에서수는 데이터 타입(data type)과 이름(identifier)을 사용하여 선언하며,
값을 저장하거나 추출할 때 변수 이름을 사용합니다.

int number;

여기서 int는 데이터 타입이며, number는 변수의 이름입니다.
이제 number라는 이름으로 해당 변수에 값을 저장하거나 추출할 수 있습니다.


변수에 값을 할당하려면 다음과 같이 작성합니다.

int anotherNumber = number + 5;

anotherNumber 변수에는 number 변수의 값(10)에 5를 더한 결과인 15가 저장됩니다.

= 기호는 등호가 아니라 대입의 의미를 가지고있습니다.

자바에서는 대입 연산자라고 부릅니다.


변수의 초기화

변수 초기화란 변수에 처음 값을 할당하는 과정입니다.

프로그램에서 변수를 사용하기 전에 변수를 초기화해야 합니다.

초기화되지 않은 변수는 메모리에 존재하는 기존의 쓰레기 값이나 불확실한 값이 할당되어 있을 수 있으며, 이로 인해 예기치 않은 결과가 발생할 수 있습니다.

변수를 선언하면서 동시에 초기화하는 방법을 사용할 수 있습니다.

예를 들어, 다음과 같이 변수를 선언하면서 초기화할 수 있습니다.

int number = 10; // 'number' 변수를 선언하고 10으로 초기화

또는 먼저 변수를 선언한 후 별도의 문장에서 초기화할 수도 있습니다:

int number; // 'number' 변수를 선언
number = 10; // 'number' 변수를 10으로 초기화

클래스 내의 인스턴스 변수와 정적 변수는 자동으로 기본 값으로 초기화됩니다.

기본값은 데이터 타입에 따라 달라집니다.

예를 들어, 정수형 변수의 기본값은 0이고, 부동소수점형 변수의 기본값은 0.0입니다.
불리언 변수의 기본값은 false이고, 참조형 변수의 기본값은 null입니다.

로컬 변수(메소드 내에서 선언된 변수)는 자동으로 초기화되지 않습니다.

로컬 변수를 사용하기 전에 명시적으로 초기화해야 합니다.

그렇지 않으면 컴파일러는 초기화되지 않은 변수 사용에 대한 오류 메시지를 표시합니다.


변수의 세가지 유형

자바에서 변수는 클래스 변수, 인스턴스 변수, 그리고 지역 변수로 구분됩니다.

이 세 가지 변수 유형은 선언 위치, 사용 범위, 그리고 생명 주기에 따라 차이가 있습니다.

  1. 클래스 변수 (static 변수): 클래스 변수는 클래스 내에서 static 키워드를 사용해 선언되며, 해당 클래스의 모든 인스턴스에서 공유됩니다. 클래스 변수는 클래스가 로드될 때 생성되고, 클래스가 언로드될 때 소멸합니다. 클래스 변수는 메모리에서 한 번만 할당되므로,
    모든 객체가 동일한 메모리 공간에 접근합니다.
class MyClass {
    static int classVar; // 클래스 변수
}
  1. 인스턴스 변수: 인스턴스 변수는 클래스 내에서 선언되지만, static 키워드를 사용하지 않습니다. 인스턴스 변수는 각 객체마다 별도로 할당되며, 객체가 생성될 때 생성되고 객체가 소멸될 때 소멸합니다. 인스턴스 변수는 객체마다 각각의 메모리 공간을 가집니다.
class MyClass {
    int instanceVar; // 인스턴스 변수
}
  1. 지역 변수: 지역 변수는 메소드 또는 블록 내에서 선언되며, 선언된 메소드나 블록 내에서만 사용할 수 있습니다. 지역 변수는 메소드 호출 시 생성되고, 메소드가 종료될 때 소멸합니다. 지역 변수는 메소드 호출 시마다 새로운 메모리 공간을 할당받습니다.
void myMethod() {
    int localVar; // 지역 변수
}

지역 변수와 인스턴스 변수의 주요 차이점은 다음과 같습니다.

  • 선언위치 : 지역변수는 메소드나 블록 내에서 선언되지만, 인스턴스 변수는 클래스 내에서 선언됩니다.
  • 사용범위 : 지역변수는 선언된 메소드나 블록 내에서만 사용할 수 있습니다. 인스턴스 변수는 클래스 내의 모든 메소드에서 사용할 수 있습니다.
  • 생명주기 : 지역 변수는 메소드 호출시 생성되고 메소드가 종료될 때 소멸합니다. 인스턴스 변수는 객체가 생성될때 생성되고 객체가 소멸될때 소멸합니다.
  • 메모리할당 : 지역 변수는 스택 메모리에 할당되며, 인스턴스 변수는 힙 메모리에 할당됩니다.
    이러한 차이점을 이해하면 변수의 사용범위와 생명주기를 적절하게 관리할 수 있습니다.
profile
i'm best

0개의 댓글