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)

참조형 매개변수 : 주소값이 통째로 복사되어 넘어감(원래의 데이터가 바뀌는거임)

                             이때, 매개변수의 자손 클래스도 같이 넘어간다