자바를 처음 공부할 때 헷갈렸던 것 중에 하나가 있는데
바로 변수를 지칭하는 용어가 너무 많아 헷갈렸었다.
멤버변수 지역변수 인스턴스변수 클래스변수 참조변수...등등
어떤게 어떤건지 왜이리 지칭하는 수식어가 많은지 생각을 했었는데 이를 한 곳에서 정리해주는 곳을 찾고 싶었으나 결국 찬찬히 공부하면서 배웠다.
하지만 다시 정리도 하고 나같은 성질 급한 사람이 있을 수 도 있으니 정리해본다.
기본형변수
참조변수
멤버변수
클래스변수
인스턴스변수
지역변수
매개변수
내가 아는 변수의 종류들이다. 무려 7가지가 있는데 나누는 기준이 다르다 크게 두가지 기준이 있다.
1. data type 에 따른 분류
기본형변수와 참조변수로 나뉜다.
기본형변수는 자료의 실제값을 저장한다.
8가지 종류의 타입이 있다.
논리형 : boolean
문자형 : char
정수형 : byte
short
int
long
실수형 : float
double
참조변수는 값이 저장되어 있는 주소값을 값으로 갖는다.
8가지 기본형 변수를 제외한 나머지 타입이다.
대표적으로 String이 있고 사용자가 얼마든지 새로운 클래스를 만들어 낼 수 있기때문에 무한하다.
2. 선언 위치에 따른 분류
크게 멤버변수와 지역변수로 나뉘며
멤버변수는 클래스변수와 인스턴스변수를 통틀어서 부르는 용어이다.
클래스영역에 선언된 변수를 멤버변수라 하며 그중 앞에 static 이붙은 변수를 클래스 변수라고 한다.
인스턴스변수
클래스 영역에 선언되고
인스턴스 생성시 만들어진다.
각각의 인스턴스마다 다른 값을 가질 수 있다.
그러므로 인스턴스 생성이 필수이며 각 인스턴스마다 다른 값을 가져야 할 때 사용된다
클래스변수
인스턴스변수 앞에 static 을 붙이기만 하면 된다.
인스턴스변수가 각각의 인스턴스마다 다른값을 가질 수 있는 거와 달리
값을 공유하는 변수이다.
클래스 로딩시 생성되며
클래스이름.변수이름 이렇게 인스턴스 생성 필요없이 바로 쓸 수 있다.
지역변수
메소드 내에 선언되며 메소드 호출시 생성되고 메소드가 종료되면 사라진다.
매개변수
흔히 파라미터라고 불린다. 메소드에서 입력값을 받을 때가 있는데 그때 사용되는 변수를 매개변수라고 한다.
매개변수도 매소드 내에 선언된 것으로 간주되므로 지역변수이다.
인자값은 호출시 메소드입력부의 넣는 값이며 이값은 매개변수에 복사되어 대입된다.
예제를 보고 직접 구분해보자!
1 2 3 4 5 6 7 8 9 10 11 12 13 | public class Variable { int a; static String b; void m(int c){ int d=c; } public static void main(String args[]) { int e=0; Variable v = new Variable(); v.m(e); } } | cs |
2번줄 a는 기본형변수이면서 멤버변수의 인스턴스변수
3번줄 b는 참조변수이면서 멤버변수의 클래스변수
4번줄 c는 기본형변수이면서 매개변수 이면서 지역변수
5번줄 d는 기본형변수이면서 지역변수
7번줄 args는 참조변수이면서 매개변수 이면서 지역변수
8번줄 e는 기본형변수이면서 지역변수
9번줄 v는 참조변수이면서 지역변수
10번줄 e는 인자값으로 값0이 매개변수에 복사되어 넣어진다.
'java' 카테고리의 다른 글
[JAVA] 날짜와 시간 Date, Calendar클래스와 java.time패키지 (0) | 2018.10.01 |
---|---|
자바[JAVA] 가변 매개변수, 가변인자(varargs) (0) | 2018.09.12 |
자바[JAVA] 객체지향언어 클래스와 객체 (0) | 2018.09.09 |
자바[JAVA] JVM heap영역의 구조와 Garbage Collection (0) | 2018.08.28 |
자바[java] nextInt() 다음 nextLine()이 안돼요 (0) | 2018.07.30 |