💻 Study/Java
[Java] 객체지향개념2_변수
와자!
2023. 1. 30. 11:50
728x90
728x90
이 게시글은 남궁성의 정석코딩 - 자바의 정석 기초편(2020최신)을 보고 공부한 내용을 정리한 게시글입니다.
틀린 내용이 있을 수 있습니다.
✔ 선언 위치에 따른 변수의 종류
class Test{
static int j; // 클래스 변수
int i; // 인스턴스 변수
void method(){
int k = 0; // 지역변수
}
}
선언 위치 | 특징 | |
클래스 변수 | 클래스 영역 안에서 선언 | - 변수 앞에 static 제어자가 붙어있으면 클래스 변수이다. - 클래스가 메모리에 올라갈 때 변수가 생성된다. - 객체 생성 없이 아무때나 사용할 수 있다. |
인스턴스 변수 | 클래스 영역 안에서 선언 | - 객체(인스턴스)가 생성됐을 때 변수가 생성된다. |
지역 변수 | 메서드 영역 안에서 선언 | - 메서드 종료 시 효력이 사라진다. |
◾ 클래스 변수와 인스턴스 변수의 차이
클래스 변수 : 공통적으로 가지는 속성
인스턴스 변수 : 개별적으로 가지는 속성
class Card {
String kind; // 카드의 무늬, 인스턴스 변수
int number; // 카드의 숫자, 인스턴스 변수
static int width; // 카드의 가로 길이, 클래스 변수
static int height; // 카드의 세로 길이, 클래스 변수
}
카드의 무늬와 숫자는 카드마다 가지는 개별적인 속성으로 인스턴스 변수로 만든다.
카드의 가로와 세로 길이는 공통적으로 가지는 속성이기 때문에 클래스 변수로 만든다.
◾ 클래스 변수와 인스턴스 변수 호출하기
클래스 변수 호출
class Main {
public static void main(String args[]) {
Card.width = 100;
Card.height = 200;
System.out.println(Card.width); // 100
System.out.println(Card.width); // 200
}
}
- 인스턴스 변수와는 다르게 객체를 생성하지 않고도 사용할 수 있다.
- 클래스명을 이용해서 클래스 변수를 사용한다. (인스턴스 변수처럼 참조변수를 이용해서 클래스 변수를 사용할 수 있지만, 인스턴스 변수와 구분하기 위해 클래스명으로 사용하는 것을 권장)
인스턴스(객체) 변수 호출
class Main {
public static void main(String args[]) {
Card c = new Card(); // 객체 생성
c.kind = "HEART";
c.number = 10;
System.out.println(c.kind); // HEART
System.out.println(c.number); // 10
}
}
- Card 타입을 가진 참조변수 c를 선언하고 Card 객체를 생성해서 객체의 주소를 c에 저장한다.
- 참조변수 c를 통해 인스턴스 변수에 접근하여 값을 할당한다.
728x90
728x90