JAVA
JAVA 변수의 종류 인스턴스변수, 클래스변수, 지역변수
짱코딩러
2022. 7. 16. 11:56
클래스 영역- iv, cv(static + iv) 클래스 전체에서 사용가능(cv는 객체생성 안해도 사용가능)
메서드 영역- lv 메서드 종료시 자동 제거 (like for문~
=>선언 만 가능. 순서는 상관X
인스턴스 변수(iv) :개별 속성. 객체마다!
클래스 변수(cv) :공통 특성. 다른 공간에 한개만!
public class Ex6_3 {
public static void main(String[] args) {
System.out.println("Card.width = " + Card.width); // cv는 객체 생성 없이 사용가능
System.out.println("Card.height = " + Card.height);
Card c1 = new Card();
c1.kind = "Heart";
c1.number = 7;
Card c2 = new Card();
c2.kind = "Spade";
c2.number = 4;
System.out.println("c1은 " + c1.kind + ", " + c1.number + "이며, 크기는 (" + c1.width + ", " + c1.height + ")");
System.out.println("c1은 " + c2.kind + ", " + c2.number + "이며, 크기는 (" + c2.width + ", " + c2.height + ")");
System.out.println("c1의 width와 height를 각각 50, 80으로 변경합니다.");
Card.width = 50; // 이 클래스에서 공유하는 cv라는것을 알 수 있도록
Card.height = 80; // 참조변수가 아닌 클래스 이름을 적어준다.
//c1이나, c2로 적어줘도 가능은 한데 봤을 때 한정적으로 적용된다고 오해할 수 있기 때문에
System.out.println("c1은 " + c1.kind + ", " + c1.number + "이며, 크기는 (" + c1.width + ", " + c1.height + ")");
System.out.println("c1은 " + c2.kind + ", " + c2.number + "이며, 크기는 (" + c2.width + ", " + c2.height + ")");
}
}
class Card {
String kind;
int number;
static int width = 100;
static int height = 250;
}
매개변수
기본형 매개변수 : 단순히 값만 복사되어 넘어감(원본에는 영향을 미치지 X)
참조형 매개변수 : 주소값이 통째로 복사되어 넘어감(원래의 데이터가 바뀌는거임)
이때, 매개변수의 자손 클래스도 같이 넘어간다