| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- @ResponseBody
- c:if
- frontController
- 유효성검사
- SpringBoot
- @RequestParam
- 바인딩변수
- MVC
- Model
- produces
- 의존주입
- 스프링
- PointCut
- jointpoint
- spring
- @Valid
- springjdbc
- 비즈니스레이어
- after-throwing
- .xml
- @
- gradle
- AOP
- 어노테이션
- application.properties
- Java
- 서비스레이어
- @RequestMapping
- 생성자주입
- springmvc
- Today
- Total
메모장
JAVA 지역변수 & 전역변수 & 참조변수 정리 본문
데이터 타입(메모리에 저장되는 방식)에 따른 분류
1) 기본 자료형 (기본형 변수 Primitive variable)
출처 입력
- 프로그래밍 언어에서 미리 만들어 둔 타입(가장 많이 쓰이는 데이터 타입을 쉽게 사용하기 위함)
- 변수에 할당된 메모리에 직접 값이 저장된다.
- 비교적 단순 데이터
- 예) int, double, boolean, char 등
2) 객체 자료형 (참조 변수 )
- 여러 데이터들이 복합적으로 모여있는 데이터
- 변수에 할당된 메모리에 데이터의 ‘레퍼런스’(주소값)가 저장된다.
- 비교적 복합적인 데이터
- 예) String, System, ArrayList 등
- 사용자가 얼마든지 새로운 클래스(데이터 타입)를 만들어 낼 수 있기 때문에 무한하다.
예시
java
int i = 10; // 기본 자료형
String s = "HONG"; // 객체 자료형
기본 자료형에는 변수 i에 잡힌 메모리 공간에 직접 데이터 10이 들어가게 되고
객체 자료형에는 "HONG"는 다른 메모리 공간에 넣어놓고, 변수 s에 잡힌 메모리 공간에는 HONG를 넣어놓았던 그 메모리 공간의 주소가 담기게 된다.
선언 위치에 따른 분류
1) 멤버변수 (필드)
- 클래스 영역에 선언된 변수로, ‘클래스변수, 인스턴스변수’를 통틀어 칭한다.
- 객체가 가지고 있는 속성과 기능을 그 객체의 ‘멤버’라 하는데,
- 이중 속성은 ‘멤버변수’라고 칭하고, 기능은 ‘메소드’라고 칭함.
1-1) 클래스변수
- 인스턴스 변수 앞에 static 을 붙이기만 하면 된다.
- 인스턴스 변수는 인스턴스마다 고유한 값을 가지지만, 클래스 변수는 모든 인스턴스가 공통된 값을 공유하게 된다.
- 클래스 로딩될 때 생성된다(따라서 메모리에 딱 한 번만 올라간다)
- public을 붙이면 같은 프로그램 내에 어디서든 접근할 수 있는 ‘전역 변수’가 된다.
- 인스턴스 변수의 접근법(new 연산자를 이용하여 인스턴스 생성)과 달리,
- 인스턴스 생성 없이 ‘클래스이름.변수이름’을 통해 접근 가능.
1-2) 인스턴스 변수
- 클래스 영역에 선언되고 인스턴스 생성 시 만들어진다.
- 따라서 인스턴스 변수의 값을 읽어오거나 저장하려면 인스턴스를 먼저 생성해야 한다. (new 연산자 활용)
- 인스턴스 별로 다른 값을 가질 수 있기 때문에, 각각의 인스턴스마다 고유의 값을 가져야할 때 인스턴스 변수 선언한다.
- 인스턴스 접근법
- 클래스명 변수명; // 클래스의 객체를 참조하기 위한 참조변수를 선언
- 변수명 = new 클래스명(); // 클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장
Tv t; // [설명 1]
t = new Tv(); // [설명 2]
[설명 1] : Tv 클래스 타입의 참조변수 t를 선언
→ 메모리에 참조변수 t를 위한 공간이 마련되었으나, 아직 인스턴스가 생성되지 않았으므로 참조변수로 아무 것도 할 수 없다.
[설명 2] : Tv 인스턴스를 생성한 후, 생성된 Tv인스턴스의 주소를 t에 저장
→ 연산자 new에 의해 Tv클래스의 인스턴스가 메모리의 빈 공간에 생성된다. 이때, 멤버변수는 각 자료형에 해당하는 기본값으로 초기화된다.
→ 이때, 참조형 변수는 null, 기본형 변수 중 boolean은 false, int는 0으로 초기화된다.
대입연산자(=)에 의해서 생성된 객체의 주소값이 참조변수 t에 저장된다. 이제는 참조변수 t를 통해 Tv인스턴스에 접근할 수 있다. 인스턴스를 다루기 위해선 참조변수가 반드시 필요하다.
인스턴스는 참조변수를 통해서만 다룰 수 있으며, 참조변수의 타입은 인스턴스의 타입과 일치해야 한다.
2. 지역변수
- 메소드 내에 선언되며 메소드 안에서만 사용 가능한 변수
- 메소드 실행 시 생성(메모리 할당)되며, 메소드가 종료되면 사라져서 사용할 수 없게 된다.
- 매개변수
흔히 ‘파라미터’라고 불리며, 메소드에서 입력값을 받을 때 사용되는 변수.
인자(파라미터)값은 호출 시 메소드 입력부의 넣는 값이며 이 값은 매개변수에 복사되어 대입된다.
매개변수도 매소드 내에 선언된 것으로 간주하므로 지역변수이다.
public class test {
int iv; // 인스턴스 변수
static int cv ; // 클래스 변수
public void method() {
int iv; // 지역 변수
}
public void makeSum(int startVal, int endVal) { // 매개 변수
}
1 public class Variable {
2 int a;
3 static String b;
4 void m(int c){
5 int d=c;
6 }
7 public static void main(String args[]) {
8 int e=0;
9 Variable v = new Variable();
10 v.m(e);
11 }
12 }
2번줄 a는 기본형변수이면서 멤버변수의 인스턴스변수
3번줄 b는 참조변수이면서 멤버변수의 클래스변수
4번줄 c는 기본형변수이면서 매개변수 이면서 지역변수
5번줄 d는 기본형변수이면서 지역변수
7번줄 args는 참조변수이면서 매개변수 이면서 지역변수
8번줄 e는 기본형변수이면서 지역변수
9번줄 v는 참조변수이면서 지역변수
10번줄 e는 인자값으로 값0이 매개변수에 복사되어 넣어진다.
클래스 변수 / 인스턴스 변수 / 지역 변수의 차이

'JAVA > 개념정리' 카테고리의 다른 글
| BufferedReader 클래스 (0) | 2024.04.08 |
|---|---|
| 자바 프로퍼티(property) 와 필드(field) (0) | 2024.04.07 |
| 절차지향언어 와 객체 지향언어의 차이 (1) | 2024.04.07 |
| HashMap (0) | 2024.04.07 |
| 데이터 , 스택 , 힙 영역 정리 (0) | 2024.04.07 |