반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

Yeonee's Story

[JAVA/자바 요약정리] 자바의 변수 개념 및 타입과 종류 본문

JAVA/JAVA 요약정리

[JAVA/자바 요약정리] 자바의 변수 개념 및 타입과 종류

yeonee 여니 2023. 6. 11. 23:29
728x90
반응형
SMALL

안녕하세요.
https://blog.naver.com/sysysy0302 여니입니다 :)

 

<변수>
변수란 하나의 값을 저장할 수 있는 공간.
그리고 변수들은 데이터 타입(Data Type)을 가지게 된다.


<변수의 선언>
변수타입 변수이름;
변수의 이름(메서드,클래스의 이름도 포함)을 선언할 때, 대소문자 구분해야한다.
숫자로 시작하거나, 예약어를 사용하면 안된다.
특수문자는 '_'와 '$'만 사용가능하다.

(ex)
int num = 6;
-> 선언후 변수의 값을 6으로 초기화 한다. (선언과 초기화 동시 진행)


<변수의 타입과 크기>
<기본형(Primitive type)>
기본형 타입(Primitive Type) : boolean, char, byte, short, int, long, float, double
- 기본형 타입에는 문자형, 논리형, 정수형, 실수형이 있다.
- 기본형 타입은 총 8가지이고, 나머지는 모두 참조형 데이터 타입을 가진다.
- 기본형 타입 값의 범위를 대략적으로 알아놓는것이 좋다.


<참조형(Reference type)>
참조형 타입(Reference Type) : 기본형을 제외한 나머지 타입
- 기본형을 제외한 모든것이 참조형 데이터 타입이다.
- 가장 쉽게 접하는 것 중 하나가 String이다.


<자바의 4가지 변수의 종류>
자바에서 변수는 4가지가 있다.
- 클래스 변수
- 인스턴스 변수
- 지역변수
- 매개변수
이러한 변수들은 선언위치와 예약어로 구분한다.


<클래스 변수>
클래스 변수는 클래스 안에, 메서드 밖에 선언되고 Static이라는 예약어를 가진다.
클래스 변수는 클래스가 사용될 때 메서드 영역(Method Area)에 생성되고 프로그램이 끝날 때 사라진다.
클래스 변수를 선언할 때는 위에서 설명했듯이 static이라는 키워드를 붙이게 된다.

<인스턴스 변수>
인스턴스 변수는 클래스 변수와 선언위치는 같지만 Static이라는 키워드가 없다.
인스턴스 변수는 객체가 생성되는 시점에 Heap영역에 생성되고 그 객체를 참조하는 다른 객체가 없으면 사라집니다.

클래서 메서드와 인스턴스 메서드는 변수사용에서 차이를 가진다.
- 클래스 메서드에서는 인스턴스 메서드, 인스턴스 변수를 사용할 수 없다.
- 인스턴스 메서드는 클래스 메서드, 클래스 변수를 사용할 수 있다.
이러한 규칙이 있는 이유는 인스턴스 멤버가 존재하는 시점에서 클래스 멤버는 항상 존재하지만, 클래스 멤버가 존재하는 시점에서 인스턴스 멤버가 항상 존재한다는 보장이 없기 때문이다.
인스턴스 멤버는 반드시 객체를 생성한 후에 참조 또는 호출이 가능하지만, 클래스 멤버는 객체를 생성하지 않고 참조연산자를 통해 접근이 가능하기 때문이다.

​<지역변수와 매개변수>
지역변수는 중괄호{} 안에 선언되어 있는 변수라고 생각하면 됩니다.
지역변수들은 메서드가 호출될 때 호출 스택(call stack)영역 생성되었다가 메서드의 작업이 끝나면 반환됩니다.
매개변수는 메서드에 넘겨주는 변수라고 생각하시면 됩니다.
다른이름으로는 파라미터(Parameter)라고 부르기도 합니다.
매개변수라는것이 어려운 것은 단순히 메서드에 넘겨주는 값인 것이다.


<변수 사용기준>
- 클래스 변수 : 모든 객체들이 동일한 값을 가져야 하는 속성은 클래스 변수로 선언한다.
- 인스턴스 변수 : 모든 객체들이 고유의 값을 가져야 하는 속성은 클래스 변수로 선언한다.
이러한 기준의 근거는 클래스 변수는 하나의 저장공간을 공유하기 때문에 누군가 클래스 변수의 값을 바꾸면, 모든 객체들이 가진 클래스 변수값이 변하게 됩니다.
하지만 인스턴스 변수는 new라는 키워드를 통해 생성되면서 독립된 저장공간을 가지게 됩니다.
즉, 생성된 객체들의 인스턴스 변수 값은 고유값이지만, 클래스 변수 값은 공통값을 가지는 것입니다.

 

728x90
반응형
LIST