네 가지의 변수가 존재
public class Calculator {
public static void main(String [] args) {
System.out.println("Calculator class started");
Calculator calc = new Calculator();
int a = 10;
int b = 5;
System.out.println(*add="+calc.add(a,b));
System.out.println("subtract="+calc.subtract(a,b));
System.out.println("multiply="+calc.multiply(a,b));
System.out.println("divide="+calc.divide(a,b));
}
// 이하생략
}
Java
복사
내용을 어딘가 담아둬야 하는데 담아 두는 것을 변수 Variable 라고 한다.
a 와 b 는 변수.
public class Car {
int speed;
int distance;
String color;
// 이하생략
}
Java
복사
변수는
•
지역 변수 local variables :
◦
중괄호 내에 선언된 변수
◦
a, b, calc
•
매개 변수 parameters :
◦
메소드에 넘겨주는 변수
◦
args
•
인스턴스 변수 instance variables :
◦
메소드 밖에, 클래스 안에 선언된 변수. 앞에 static 존재X
◦
speed, distance, color
•
클래스 변수 class variables :
◦
인스턴스와 같지만 앞에 static 존재O
class Test{
String first; // 인스턴스 변수
static String second; // 클래스 변수
void test(){
String third; // 지역 변수
}
}
Java
복사
각 생명 주기가 달라서 이름을 다르게 부른다.
•
지역 변수 local variables :
◦
중괄호 내에서만 유효.
•
매개 변수 parameters :
◦
호출될때 시작 되고 메소드가 끝나면 소멸.
•
인스턴스 변수 instance variables :
◦
메객체가 생성될때 시작되고 객체를 참조하고 있는 다른 객체가 없으면 소멸.
•
클래스 변수 class variables :
◦
클래스가 처음 호출될때 시작되고 프로그램이 끝날때 소멸.
자바에는 가비지 콜렉터가 알아서 때가 되면 메모리에서 청소해줌.
변수 종류 | 선언 위치 | 설명 | 생성 시기 | 소멸 시기 | 저장 메모리 |
클래스 변수
(Static variable) | 클래스 영역 | static 키워드가 붙고 여러 객체에서 공통으로 사용 할 때 사용 | 클래스가 메모리에 올라갈때 | 프로그램 종료 시 | Static |
인스턴스 변수
(Instance variable) | 클래스 영역 | 클래스 영역에서 static이 아닌 변수 | 인스턴스가 생성 | 인스턴스 소멸시 | Heap |
지역 변수
(Local variable) | 메서드 영역 | 메서드 내부에서 선언된다.
초기 값을 지정해야 사용가능. | 블록 내에서 변수의 선언문이 실행 | 블록을 벗어날 때 | Stack |
매개 변수
(parameter) | 메서드 영역 | 메서드 호출 시 '전달하는 값'을 가지고 있는 인수 | 호출될때 시작 | 메소드가 끝나면 | Stack |
참고
자바의 신1권