변수의 선언 위치가 변수의 종류와 범위를 결정한다. 변수에는 클래스변수, 인스턴스변수, 지역변수가 있다.
변수의 종류 | 선언위치 | 생성시기 |
---|---|---|
클래스변수 | 클래스 영역 | 클래스가 메모리에 올라갈 때 |
인스턴스변수 | 클래스 영역 | 인스턴스 생성시* |
지역변수 | 메소드 영역 | 변수 선언문 수행시 |
1) 인스턴스변수(instance variable) :
2) 클래스변수(class variable) :
//클래스 변수 선언과 객체 생성
클래스 변수=new 클래스();
3) 지역변수(local variable) :
class Variables {
//인스턴스 변수
int iv;
//클래스 변수(static 변수)
static int cv;
void method() {
int lv=0; //지역변수
}
}
메소드 : 명령문 모음 집합, 객체의 동작에 해당하는 중괄호{ } 블록을 말한다.
1) 인스턴스 메소드(instance method) :
2) 클래스 메소드(class method) :
Q 언제 메소드에 static을 붙여줄까?
A iv를 사용하지 않을때 static 붙여 클래스 메소드로 만들어줌
class MyMath {
long a, b;
long add() { //인스턴스 메소드
return a+b;
}
static long add(long a, long b) { //클래스메소드(static메소드)
return a+b;
}
}
void startEngine() { ... }
String getName() { ... }
int[] getScores() { ... }
//메소드 호출 방법
메소드 이름(값1, 값2....);
print99danAll(); //void print99danAll 호출
int result=add(3,5); //int add(int x, int y)를 호출하고 결과를 result에 저장
실행 중인 메소드를 종료하고 호출한 곳으로 되돌아간다. 반환타입이 void가 아닌 경우 return문 필요, void라면 생략 가능하다.
int multiply(int x, int y) {
int result x*y;
return result; //반환타입이 void 아니어서 return문 필요
}
int max(a, b) {
if(a>b)
return a; //조건식이 참일때만 실행
}
리턴문 작성하기
int result=mm.add(3,5);
int add(int x, int y) {
int result=x+y;
return result;
}
// => 위의 두 문장을 한 문장으로 축약 가능
int result=mm.add(3,5);
int add(int x, int y) {
return x+y;
}
//메소드를 사용할 때는 타입에 맞는 값들이 반환되고 그 값을 저장할 변수도 타입이 일치해야 한다.
//int(첫번째 줄), int(두번째 줄), result값인 8의 타입 일치