자바 공부를 처음 시작했을 당시 학원을 다녀야겠다는 결심을 한 계기가 바로 이 변수다...
용어도 참 더럽게 많다... 멤버 변수 지역변수 인스턴스 변수... 등등
참 더럽게 많다...
확실하게 알기 위해 정리를 해보기로 했다.
변수의 의미부터 정확하게 알아보자.
변수: 수학에서는 변하는 수라고 정의를 하지만 프로그래밍 언어에서의 변수(valriable)는
단 하나의 값을 저장할 수 있는 메모리 공간을 의미하며, 새로운 값을 저장하면 기존의 값은 사라진다.
변수 선언: 메모리의 빈 공간에 '변수 타입'에 알맞은 크기의 저장공간이 확보되고 이 저장 공간은 변수 이름을 통해 사용할 수 있게 된다.
변수 선언 방법은
*변수를 선언 시에 변수의 데이터 타입(변수 타입)과 변수 이름을 지어주어야 한다.*
윗 문장은 age라는 변수를 선언 한 문장이다. 나이를 저장하는 변수 이기에 정수(intege)인 int을 변수 타입으로 지정하였다. 변수 타입은 아래에 더 자세히 나와있으니 일단 이 정도만 알아두자.
변수 이름처럼 프로그래밍에서 사용하는 모든 이름을 식별자라 하며, 이는 같은 영역 내에 서로 구분이 되어야 한다.
그리고 식별자를 만들 시 아래의 규칙을 따라야 한다.
변수 선언(식별자 만들) 시 주의사항
a. 예약어 사용 불가
[ex) true는 예약어라 불가능 하지만 TRUE는 가능]
b. 숫자로 시작 불가(abc12 -> O/ 12 abc -> X)
c. 중복 선언 불가
d. 특수 문자($, _를 제외) 사용 불가
e. 대소문자 구분하되 길이는 제한 없음
[ex) True와 true는 서로 다른 것으로 간주한다]
변수형을 나누는 기준 중 크게 두 가지 기준을 볼 수 있다.
1. data type에 따른 분류
기본형 변수는 자바에서 기본적으로 제공해 주는 자료형이며
자료의 실제 값을 저장하며 크게 4가지의 종류로 나타 낼 수 있다.
좀 더 보기 편하자면
(이 표를 암기해두면 좋을 듯하다.
면접시험 봤을 때 나왔었다. )
기본형 종류에 대해 알아보자.
논리형: true false 중 하나의 값만 가져서 참 거짓을 구분하고 조건식과 논리적 계산에 사용된다.
문자형: 문자를 저장하는 데 사용하며 변수에 하나의 문자만 저장한다.
정수형: 말 그대로 정수를 저장
실수형: 실수를 저장
* 논리형은 다른 기본형과는 연산이 불가능하며 다시 말해 나머지는 서로 연산과 변환이 가능하다.
참조형 변수는 클래스 자료형으로써, 값이 저장되어 있는 주소 값을 값으로 가진다.
이 변수는 기본형과는 다르게 클래스에 따라 사용하는 크기가 다르다.
대표적으로는 String 이 있으며 개발자가 직접 만들 수도 있다
위의 기본형 변수 8가지를 제외한 나머지 타입을 의미한다.
참조형 변수를 선언 시 변수의 타입으로 클래스의 이름을 사용하기에 클래스 이름이 참조 변수의 타입이 된다.
그렇기에 새로운 클래스를 작성한다는 건 새로운 참조형을 추가한다고 생각하면 된다.
참조 변수를 선언 하는 방법은 기본형 변수와 같이 변수 이름 앞에 타입을 적어주는데 참조 변수의 타입은 클래스의 이름이다.
// 변수 타입이 기본형이 아닌 것은 모두 참조 변수라 생각하면 된다.
좀 더 쉽게 이해 하기 위해 예를 들어보자면
Date today = new Date( );
이것은 Date 클래스 타입의 참조 변수 today를 선언한 것이라 생각하면 된다.
참조 변수는 null 또는 객체의 주소 값을 가지기에 초기화를 한 것이다.
객체를 생성하는 연산자 new 의 결과는 생성된 객체의 주소이다.
'='에 의해 참조 변수 today에 저장을 하고 이를 통해 생성된 객체를 사용할 수 있게 된다.
2. 선언 위치에 따른 분류
멤버 변수는 클래스 변수와 인스턴스 변수를 합쳐 부르는 용어이다
클래스 영역에 선언된 변수를 멤버 변수라 하고 그 앞에 static을 붙이면 클래스 변수라고 한다.
인스턴스 변수
클래스 영역에 선언되고 인스턴스 생성 시 만들어진다.
각각 다른 인스턴스마다 다른 값을 가질 수 있다.
인스턴스 생성이 필수이고 각 인스턴스마다 다른 값을 가져야 할 때 사용한다.
클래스 변수
인스턴스 앞에 static을 붙여서 사용한다.
인스턴스 변수와는 달리 클래스 변수는 값을 공유하는 변수이다.
클래스 로딩 시 생성되며, 클래스 이름, 변수 이름처럼 인스턴스 생성이 필요 없이 바로 사용 가능
지역변수
메서드 내에 선언되며 메서드 호출 시 생성되고 메서드 종료 시 사라진다.
매개변수
다른 말로 파라미터라고 부른다.
매소드에서 입력값을 받을 때 사용되는 변수를 매개변수라 한다.
매소드 내에 선언된다고 간주되므로 지역변수라 할 수 있다.
상수(constant)
상수는 반드시 선언과 동시에 초기화를 해야 하며, 값을 저장하면 다른 값으로 변경이 불가하다.
선언 방식은 변수랑 동일하나 변수 타입 앞에 'final'을 붙여줘야 한다.
예약어 (0) | 2019.12.01 |
---|---|
기본 자료형 (0) | 2019.11.24 |
클래스, 객체 , 인스턴스의 차이 (0) | 2019.11.24 |
접근 지정자 (private, public, protected, default) (0) | 2019.11.23 |
자바 변수와 자료형 (0) | 2019.11.22 |
댓글 영역