20150912



자바 객체지향 프로그래밍(Java Object-oriented Programming)


변수(Variables)



변수 : 단 하나의 값을 저장할 수 있는 공간

변수 선언 방법

int number;    [변수타입 변수이름;]


기본형 변수와 참조형 변수

기본형(Primitive type) : Boolean, char, byte, short, int, long, float, double
참조형(Reference type): 8개 기본형을 제외한 나머지 타입, 객체의 주소를 저장 
참조형 변수 선언 방법
HelloWorld hw;      [ 클래스 이름 변수명;]
 
* 기본형은 기본형 값이 복사 되지만 참고형은 값을 저장한 곳의 주소를 저장합니다.



형변환(casting)

형변환: 변수의 타입을 다른 타입으로 변환하는 것

(타입)피연산자
int a = (int)85.7;

85.4 double 형 값을 int 형으로 변환하여 a 에 저장
int 형정수형이기 때문에 값은 85로 변경 ( 소수점 값은 무조건 버려진다.)
                            

타입이 작은거에서 큰것으로 갈때는 생략 가능    작은 타입-> 큰 타입 = 생략 가능
타입이 큰것에서 작은것으로 갈때는 생략 불가능 작은 타입<- 큰 타입 = 생략 불가능 




변수에는 3가지 종류가 있습니다.

변수 종류 -클래스변수, 인스턴스변수, 지역변수

변수는 선언된 위치에 따라 종류가 달라지기 때문에 어느 영역에 선언 되었는지를 봐야 합니다. 우선 코드 예시를 보도록 할게요.

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

iv 는 인스턴스 변수

cv  는 클래스 변수

lv 는 지역변수

입니다. 

우선 인스턴스변수(instance variable) 설명입니다.

클래스 영역에 선언되고 인스턴스(객체)가 생성할 때 만들어 집니다. 그래서 객체를 만들기 전에는 인스턴스변수를 사용할 수 없죠 사용하기 위해선 먼저 객체를 만들어야 합니다.
인스턴스 변수는 생성될 때 마다 생성되기 때문에 각기 다른 값을 갖습니다.


다음은 클래스 변수(class variable)
클래스 변수를 선언하는 방법은 클래스 변수는 변수 앞에 static 을 붙여주면 됩니다.  클래스 변수는 class가 로딩 될때 만들어져서 프로그램이 종료될때 까지 유지하기  때문에 객체를 만들지 않고도 사용할 수 있습니다. '클래스명.클래스변수' 이런 식으로 사용이 할 수 있죠
또한 클래스 변수는 모든 인스턴스가 하나의 저장공간을 유지합니다. 그래서 항상 공통된 값을 유지합니다.

지역변수(local variable)
메서드 안에서 선언되어서 메서드 안에서만 사용이 가능하고 메서드가 종료되면 지역변수는 사용할 수 없습니다.
예를 들면 for 문에서 블럭{} 안에서 선언된 변수는 그 안에서만 사용이 가능합니다.

코드 예시로 변수들을 설명 하겠습니다.
public class Variables {
	
	int iv; //인스턴스 변수
	static int cv; // 클래스 변수 (Static 변수)
	
	void method() {
		int lv = 10;   //지역변수
	}	
	//lv = 20; 이 영역은 method 블럭{} 밖에 있기 때문에 사용 할 수 없습니다.
}
class test {
	public static void main(String[] args) {
		
		Variables.cv = 10; // cv 는 클래스 변수이기 때문에 객체를 만들지 않고 사용 할 수 있습니다.
	//	Variables.iv = 10; 오류 발생 iv 는 클래스 변수이기 때문에 객체를 만들지 않고 사용 할 수 없습니다.
		
		Variables v = new Variables(); // 변수 iv 를 사용하기 위해 객체를 만들고
		v.iv = 20;                     // 객체의 주소가 담긴 변수 v 를 이용해 iv 변수를 사용합니다.
	}
}	

3번 4번 7번 줄은 각각 인스턴스변수, 클래스변수, 지역변수 를 선언한 모습입니다.그리고 9번줄은 method() 함수 블럭{} 밖에서 사용을 해서 오류가 나는 잘못 된 코드 입니다.

14번 줄 처럼 클래스 변수는 객체를 만들지 않고도 '클래스명.변수명' 으로 사용할 수 있지만 15번 줄 처럼 인스턴스 변수를 '클래스명.변수명' 처럼 사용하면 오류가 납니다.

그래서 인스턴스 변수를 사용하기 위해서는 17번 줄 처럼 객체를 만들어서 사용해야 합니다.











 






+ Recent posts