클래스의 정의 

변수 : 하나의 데이터를 저장할 수 있는 공간 

배열 : 같은 종류의 여러 데이터를 하나로 저장할 수 있는 공간

구조체 : 서로 관련된 여러 데이터(종류 관계X)를 하나로 저장할 수 있는 공간 

클래스 : 데이터와 함수의 결합 (구조체 + 함수) 

 

1. 시, 분, 초는 모두 0보다 크거나 같아야 한다.

2. 시의 범위는 0~23, 분과 초의 범위는 0~59이다.

객체지향언어에서는 제어자와 메서드를 이용해서 위에 2가지 조건을 반영할 수 있다.

public class Time {
	
    private int hour;
    private int minute;
    private float second;
    
    //hour의 값을 변경하기 위한 메서드
    //지정한 값이 0보다 작거나 23보다 크면 종료(return)
    public void setHour(int h) {
    	if ( h < 0 || h > 23 ) return;
    	hour = h;  //지정된 값(h)이 유효한 경우에만 hour변경
        }
}

 

선언 위치에 따른 변수 종류 

- 클래스 영역 - iv (instance variable) , cv (class variable)

- 메서드 영역 - lv (local variable) 

class Variable
{
	int iv;           // 인스턴스 변수
    static int cv;	  // 클래스 변수 (static 변수)
    
    void method()
    {
    	int lv = 0;    // 지역변수
    }
}

 

변수의 종류 선언 위치 생성 시기 
클래스 변수 (class variable) 클래스 영역  클래스가 메모리에 올라갈 때 
인스턴스 변수 (instance variable) 인스턴스가 생성되었을 때 
지역 변수 (local variable)  클래스 영역 이외의 영역 
(메서드, 생성자, 초기화 블럭 내부)
변수 선언문이 수행되었을 때 

 

인스턴스 변수는 클래스 영역에 선언되며, 인스턴트를 생성할 때 만들어진다.

인스턴스마다 별도의 저장공간을 가지므로 서로 다른 값을 가질 수 있다.

 

클래스 변수는 인스턴스 변수(iv)앞에 static만 붙이면 된다.

클래스 변수는 모든 인스턴스가 공통된 저장공간을 공유하게 된다. (공통적인 값을 클래스 변수로)

클래스 변수는 인스턴스 변수와 달리 인스턴스를 생성하지 않고 바로 사용할 수 있으며

'클래스 이름.클래스 변수'와 같은 형식으로 사용한다.

 

지역변수는 메서드 내에 선언되어 메서드 내에서만 사용 가능하다.

메서드가 종료되면 소멸되어 사용할 수 없게 된다. for문 또는 while문의 블럭 내에

선언된 지역변수는, 지역변수가 선언된 블럭 {  } 내에서만 사용 가능하다.

 

class Card{

    String kind ; //무늬 

    int number ;  //숫자              (무늬와 숫자는 개별 속성이므로 인스턴스 변수) 

    static int width = 100; //폭 

    static int height = 250; //높이    (폭과 높이는 공통 속성이므로 클래스 변수) 

} 

Card c = new Card();  // 인스턴스 변수를 사용하기 위해 객체생성
c.kind = "HEART"      // 객체를 생성해야만 사용가능

card.width = 200      // 클래스 변수는 객체생성 없이 '클레스이름.클래스 변수'로 사용