본문 바로가기
study/Java

[Java] 18. 클래스와 객체 (변수의 종류)

by 금이패런츠 2022. 3. 17.
728x90
반응형
package chap6;
/*
 * 선언 위치에 따른 변수의 종류
 * 
 *                        선언위치        선언방법         할당위치      접근방법
 *  클래스 변수 (정적변수)  : 클래스 내부    static int num;  클래스영역    클래스명.변수명
 *        메모리 할당 시점 : 클래스 정보가 로드 될때 클래스 영역에 메모리 할당 됨.
 *                      1. 객체화랑 관련 없음.
 *                      2. 모든 객체의 공통변수로 사용됨. 모든 객체가 같은 값을 공유함.
 *                      3. 기본값으로 초기화됨.
 *                       
 *  인스턴스 변수         : 클래스 내부    int num;         힙영역      참조변수명.변수명
 *        메모리 할당 시점 : 객체화시 힙영역에 메모리 할당 됨.
 *                      1. 반드시 객체화 되어야 메모리 할당됨.
 *                      2. 객체별로 다른 메모리가 할당됨. 객체별로 다른 값을 저장할 수 있음.
 *                      3. 기본값으로 초기화됨.
 *                      
 *  지역 변수            : 메서드 내부    int num;         스택영역     변수명
 *        메모리 할당 시점 : 변수의 선언문이 실행될 때 스텍영역에 할당됨.
 *         				1. 반드시 초기화를 해야함.
 *         				2. 매개변수는 지역변수다. 
 */
class Car {
	String color;           //인스턴스 변수
	int number;             //인스턴스 변수
	static int width = 200; //클래스 변수
	static int height = 120;//클래스 변수
	//toString() : 객체의 문자열화에 관여하는 메서드
	//             참조변수 이름으로 출력할때 자동 호출되는 메서드
	public String toString() {
		return color + ":" + number + "(" + width + "," + height + ")";
	}
}
public class CarEx1 {
	public static void main(String[] args) {
    
		System.out.println("자동차 크기:" + Car.width + "," + Car.height);
//		System.out.println("자동차 정보:" + Car.color + "," + Car.number);
		Car car1 = new Car(); //객체화
		System.out.println("car1:" + car1); //car1.toString() 메서드 호출
		car1.color = "흰색";
		car1.number = 1234;
		System.out.println("car1:" + car1);
		
		Car car2 = new Car();
		car2.color = "빨강색";
		car2.number = 2345;
		System.out.println("car2:" + car2);
		car1.width = 100;
		car1.height = 60;
		System.out.println("car1:" + car1); //width=100, height=60
		System.out.println("car2:" + car2); //width=100, height=60
		
		//지역변수는 반드시 초기화가 필요함
		int num = 0;
		System.out.println(num); //초기화가 되지 않음. 출력할수 없음.
		
		char ch;
		if(num == 0) ch='A';
		else ch='B';
		System.out.println(ch); //ch변수는 반드시 초기화 됨.
		
		char ch1;
		if (num == 0) ch1 = 'C';
		else if (num == 1) ch1 = 'D';
//		System.out.println(ch1); //ch1 변수는 초기화 안될 가능성 있음.
		
		int[] arr;
//		System.out.println(arr.length); //arr 변수가 초기화 안됨.
	}
}
728x90
반응형