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번 줄 처럼 객체를 만들어서 사용해야 합니다.
'프로그래밍 > java' 카테고리의 다른 글
Java 다형성(polymorphism) (0) | 2015.09.16 |
---|---|
java 메서드(method) (0) | 2015.09.12 |
객체 지향 프로그래밍(java Object-oriented programming) (0) | 2015.09.11 |
[Java] 자바 주석 사용법 (java comment) (0) | 2015.09.07 |
자바(Java Programming Language) (0) | 2015.09.06 |