본문 바로가기
프로그래밍/Java

[Java] 변수(Variables)와 상수

by 소꿍 2020. 8. 11.

변수(Variable)

  • 프로그램에서 사용하는 데이터인 리터럴을 저장하기 위해 사용한다.
  • 저장된 데이터는 변경이 가능하므로 변경이 가능한 수, '변수'라고 한다. 변경이 불가능한 수는 '상수'라고 한다.
  • 변수에는 하나의 값, 한 가지 타입만 저장 가능(복수의 값을 저장할 때는 배열이나 컬렉션 사용)
  • 저장된 데이터의 타입에 따라 기본형 변수/참조형 변수로 나뉜다.
    기본형 변수는 자료의 실제값을 저장하고, 참조형 변수는 값을 가진 주소값을 저장한다.

    예를 들어 int num = 3;에서 num은 기본형 변수이며, 정수값 3의 데이터를 저장한다.
    반면 String name = "홍길동";에서 name은 참조형 변수이며, "홍길동"이라는 데이터가 있는 주소값을 가진다.

변수 사용의 3단계

1. 변수 선언

  변수에 저장할 데이터형변수명을 사용해 변수를 선언한다.

  동일한 이름으로 변수를 중복 선언할 수 없다.

  문법) 데이터형 변수명;

int num; //기본형 변수
String name; //참조형 변수

 

2. 변수 할당(초기화)

  선언된 변수에 초기값을 설정하는 작업이다.

  문법) 변수명 = 값;

int num;
num = 10;

String name;
name = "홍길동";

위에서 변수를 선언한 후 아래에서 변수 초기화를 하고 있다.

 

변수 선언과 초기화를 한 번에 할 수도 있다.

int num = 10;
String name = "홍길동";

 

3. 변수값 변경

변수에 저장된 데이터는 일반적으로 프로그램이 실행되면서 변경된다.

int age = 10;
...
age = 20;

위의 코드처럼 프로그램 실행 중에 변수값을 변경할 수 있다.

 


변수의 사용 범위(scope)

변수는 블록({}) 내에서 선언되고 사용된다. 즉, 변수의 사용 범위를 scope(스코프)라고 한다.

Java에서 변수는 블록 단위의 scope를 사용한다. 중괄호({ }) 안에서 선언된 변수는 해당 블럭 안에서 사용할 수 있고,

블럭 밖에서는 사용 불가하다.(변수에 값이 임시로 저장되었다가 블록을 빠져나가면 제거되기 때문)


변수 종류

  • 지역 변수(local 변수): 메소드 내에 선언되며, 메소드 호출 시 생성되고 메소드가 종료되면 사라진다.
                                즉, 지역 변수는 선언된 메소드 블록 내에서만 사용된 후 사라진다.
  • 전역 변수(global 변수): 지역 변수와 달리 전역 변수는 클래스 블록에서 선언하여 사용한다.

  • 멤버 변수: 멤버변수는 클래스 변수, 인스턴스 변수를 포괄하는 용어이다. 즉, 클래스 블록에서 선언된다.
  • 인스턴스 변수: 클래스 블록에 선언되고, new 키워드를 통해 인스턴스를 생성할 때 만들어진다.
    따라서 인스턴스 생성이 필수적이며, 인스턴스를 생성할 때마다 다른 값을 지정하여 사용할 수 있다.
    즉, 인스턴스마다 다른 값을 가져야 할 때 사용할 수 있다.
  • 클래스 변수(static 변수): 클래스 블록에 선언되고, 변수명 앞에 'static' 키워드를 붙여 선언한다.
    인스턴스마다 다른 값을 가질 수 있었던 인스턴스 변수와 달리 클래스 변수는 값을 공유한다.
    클래스를 불러올 때 static 키워드를 가진 메소드, 변수 등을 가장 먼저 생성하기 때문에
    클래스이름.변수이름으로 인스턴스를 생성하지 않고도 바로 쓸 수 있다.

  • 매개 변수(인자, parameter): 메소드에서 입력값을 받을 때 사용되는 변수를 매개변수(파라미터)라고 한다.
    예를 들어 아래의 코드에서 메소드 이름인 "method" 뒤 괄호 안에 들어가는 변수가 매개변수이다.
    아래 코드에서 method()는 String 타입의 변수 name을 매개변수로 받는 메소드이다.
public void method(String name){
	System.out.println(name);
}

매개변수를 지정하면 메소드 호출 시 반드시 지정된 타입의 매개변수를 입력해 줘야 하며, 입력된 인자값은 매개변수에 복사되어 대입된다.


상수

상수는 값을 변경할 수 없는 수로, final 키워드를 사용해 처리한다.

상수명은 대문자로 설정한다.

문법) final 데이터형 상수명=값;

public final int NUM 30;

'프로그래밍 > Java' 카테고리의 다른 글

[Java] equals(), ==, compareTo()  (0) 2020.08.30
[Java] 연산자(Operator)  (0) 2020.08.12
[Java] 데이터형(Data type)  (0) 2020.08.09
[Java] 식별자(identifier)  (0) 2020.08.09
[Java] Java의 개요  (0) 2020.08.09

댓글