JAVA/JAVA

Java | Variable 변수, Scope, Constant 상수

pathas 2020. 1. 15. 22:22

Variable 변수


Variable Declaration 변수 선언

메모리(RAM)에 문자, 숫자, 논리적인 값을 저장할 수 있는 공간을 생성하는 것

  • 메모리의 일정 공간을 특정해서 거기에 데이터를 저장
    정확한 위치는 알 수 없음
  • 데이터를 저장하거나 불러올 때 사용
    변수가 주소값으로 사용됨
  • 컴퓨터는 데이터의 위치를 숫자로 지정하지만
    사람이 그렇게 하기는 어렵기 때문에 변수의 이름을 지정해서 사용
  • 변수명은 중복을 허용하지 않음

형식 1

변수를 먼저 선언한 뒤에 변수 값을 초기화

public class VarTest {
    public static void main(String[] args) {
        //자료형 변수명;
        int age;
        age = 23;
        System.out.println("올해 제 나이는 : "+age+"입니다.");
        // 올해 제 나이는 : 23입니다.
    }
}

※ 메모리 내부에 age변수가 저장될 수 있는 공간이 생성됨

형식 2

변수를 선언하는 동시에 변수 값을 초기화

public class VarTest {
    public static void main(String[] args) {
        //자료형 변수명;
        int age = 23;
        System.out.println("올해 제 나이는 : "+age+"입니다.");
        // 올해 제 나이는 : 23입니다.
    }
}

형식3

자료형이 같은 경우 한 번에 여러 개의 변수 선언 가능

public class VarTest4 {
    public static void main(String[] args) {
    int num1, num2, num3;

    // 여러 변수 선언과 동시에 변수 값 초기화 가능
    int num4 = 1, num5 = 2, num6 = 3;
    System.out.println(num4+num5+num6); // 6
    }
}

변수 특성

  • 변수는 값을 출력하기 전에 초기화되어 있어야 함
    초기화하지 않고 출력시 에러 발생
  • 변수는 중간에 값이 바뀔 수 있음
    가장 마지막 값이 최종적으로 저장됨
public class VarTest4 {
    public static void main(String[] args) {
        int num;
        System.out.println(num);
        /* 에러 발생, 소스코드를 실행하기 위해서는
        주석처리 하거나, 삭제하거나, num을 초기화해야함 */

        num = 23;
        System.out.println(num);
        // 23
    }

}

변수 종류

  • 멤버 변수(Member Variable) : 클래스 내부에, 메서드 외부에 선언된 변수
  • 지역 변수(Local Variable) : 메서드 내부에 선언된 변수
    선언된 메서드 외부에서는 접근할 수 없는 변수
    {블럭단위}로 지정하며, 해당 블럭 밖에서는 사용할 수 없음
public class VarTest5Scope {
    int su3;
    // 멤버 변수 Member Variable : 클래스 내부에 선언된 변수
    public static void main(String[] args) {   
    int su1 = 10; 
     // 지역 변수 Local Variable : 메서드 내부에 선언된 변수
    }
}

Scope 변수 범위

Scope : 변수가 사용될 수 있는 범위를 나타냄

public class VarTest5Scope {
    public static void main(String[] args) {
    int su1 = 10;
    {// 블럭Block 지정
        int su2 = 20;
        System.out.println("su1값: "+su1);
        System.out.println("su2값: "+su2);
       /* su1값: 10 
        → su1은 이 블럭을 포함하는 메서드에 선언되었기 때문에 정상 출력됨
        su2값: 20 */
    }
    System.out.println("su2값: "+su2);
       //su2가 선언된 블럭 밖에서 su2를 호출하고 있기 때문에 에러 발생
    }
}

※ su1 변수 scope : main 메서드 전체
su2 변수 scope : main 메서드 내부에 su2가 선언된 블럭


Constant 상수

값이 정해지면 중간에 바뀌지 않는 수

FINAL

변수 앞에 작성하는 예약어이며 해당 변수를 상수로 변환

관례적으로 상수는 이름을 대문자로 작성

public class VarTest4 {
    public static void main(String[] args) {
        final int NUM7 = 40;
        NUM7 = 22; // NUM7은 값이 변할 수 없기 때문에 에러 발생
    }
}

소스코드 작성시 데이터를 저장하는 변수와 상수에 대해 알아보았습니다.

변수와 상수는 어디에 선언되었느냐에 따라서 접근 가능 범위가 달라지기 때문에

Scope에 대해 알고 있으면 어디에 선언한 변수를 어떻게 사용해야 하는지에 대해 알 수 있습니다.