티스토리 뷰
java 에는 크게 3개의 변수로 분류한다.
-클래스변수
-인스턴스변수
-지역변수
3가지의 변수는 각각의 선언된 위치에 따라서 분류 가 된다.
각가의 특징과 장단점을 알아보자.
class variable{
int a ; //클래스 안에서 static 없이 선언, 인스턴스변수
static int b ; //클래스 안에서 static 을 붙이고 선언. 클래스변수
void test(){
int c ; //메소드 안에서 선언, 지역변수 (메소드안에서만 사용가능하고 메소드를벗어나서 호출하면 안됨)
}
}
클래스 변수는 클래스 안에 어디서든 생성자를 만들지않고도 호출이가능하다.
----------------------------------------------------------------------------------------------------------------------------
-클래스 변수와 지역변수의 차이 예제-
public class variable{
static int width = 2000;
static int height = 1000;
public static void main(String[] args){ // 메인메서드 (실행메서드)
System.out.println(width); // = 2000
System.out.println(height); // = 1000
System.out.println(a); //test 메소드에서 생성한 지역변수는 test 메소드 { } 중괄호 외부에서는 사용할수없다!
}
void test() { // 클래스 안에서 생성한 메서드
int x =50
int y =100;
System.out.println(a); // = 50 test 메서드{ } 중괄호 안에서만 사용가능
}
}
---------------------------------------------------------------------------------------------------------------------------------
-클래스변수와 인스턴스변수 의 차이 예제-
클래스 변수와 인스턴스변수 모두 클래스 내에서 생성된 변수로 멤버변수 라고도 한다.
public class variable {
public static void main(String[] args){
System.out.println(Test.b); // = 99 외부 클래스지만 멤버변수에 접근가능
//main 메서드에서 클래스 Test 생성자 후 접근
Test T = new Test(); //인스턴스화 한다고 한다.
T.a = 100; // 100으로 값할당
System.out.println(T.a); // = 100
System.out.printLn(b) = 99;
T.a = 200; //100 에서 200으로 값변경
System.out.println(T.a); // = 200;
System.out.printLn(b) = 99;
}
}
class Test{
int a ;
static int b = 99; 멤버변수,
}
자주 값을 변경할것같으면 인스턴스변수로 구분지어 사용.
자주 값이 바뀌지않고 동일한 값을 가지게 할 생각이면 클래스변수로 (static) 으로 구분지어
사용.
클래스변수도 물론 값을 자주 바꿔도 되지만 그렇게되면 인스턴스변수로 구분지어 사용하는
의미가 없을것같단 생각이든다 .
'Java' 카테고리의 다른 글
Java ( Int < - > String 배열 변환) (0) | 2022.04.05 |
---|---|
Java 문자열 을 split 메서드 로 분리하기 (0) | 2022.04.05 |
Java 배열과 리스트의 차이 (0) | 2022.04.05 |
Java (데이터 기본형<리터럴> , 참조형<레퍼런스타입>) (0) | 2022.04.04 |
Java 실행과정 (.java -> .class -> 실행 ) (0) | 2022.04.04 |
- Total
- Today
- Yesterday
- e.toString()
- set
- react-redux
- 클래스영역
- redux
- mapDispatchToProps
- List Set 변환
- e.printStackTrace()
- 오버로딩
- Stack Area
- Method 영역
- nexLine
- java문자열배열
- 클래스변수 인스턴스변수 차이
- e.getMessage()
- java 배열 출력
- java 예외
- publi
- java멤버변수
- Scanner 와 BufferedReader 차이
- java숫자형배열
- java전역변수
- final 변수 초기화
- Java
- 기본형타입
- 자바
- Dispatch
- java최대값최소값
- Heap Area
- map set 변환
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |