변수
종류 | 위치 | 생성 시기 |
클래스 변수 | 클래스 영역 | 클래스가 메모리에 올라갈 때 |
인스턴스 변수 | 인스턴스가 생성되었을 때 | |
지역 변수 | 클래스 영역 이외 (메서드, 생성자, 초기화 블럭 내부) |
변수 선언문이 수행되었을 때 |
Class Variables{
int iV // 인스턴스 변수
static int cv; //클래스 변수 (static변수, 공유변수)
void method(){
int lv = 0; //지역변수
}
}
* static이 붙은 것은 클래스 변수로, 모든 인스턴스가 공유하게 된다. (모든 인스턴스들이 공통적인 값을 유지해야하는 속성인 경우, 클래스 변수로 선언)
메서드
특정 작업을 수행하는 일련이 문장들을 하나로 묶은 것
특징
1. 높은 재사용성
: 한번 만들어 놓으면 몇번이고 호출할 수 있다.
2. 중복된 코드의 제거
: 반복되는 문장들을 하나의 메서드로 작성해 놓으면 코드의 중복 제거가 가능하다
3. 프로그램의 구조화
: 큰 규모의 프로그램에서 문장들을 작업단위로 나눠서 여러 개의 메서드에 담아 프로그램의 구조를 단순화 시킨다.
* 그래야 나중에 프로그램에 문제가 발생해도 해당 부분을 쉽게 찾아서 해결할 수 있다.
메서드 선언부
: 메서드가 작업을 수행하기 위해 어떤 값들을 필요로 하고 작업의 결과로 어떤 타입의 값을 반환하는지에 대한 정보 제공
메서드 구현부
: 메서드를 호출 했을 때 수행될 코드
* return문의 반환 값의 타입은 메서드의 반환 타입과 일치하거나 적어도 자동 형변환이 가능한 것이어야 한다.
기본형 매개변수와 참조형 매개변수
메서드의 매개변수를 참조형으로 선언하면 값이 저장된 곳의 주소를 알 수 있기 때문에, 값을 읽어 오는 것은 물론 값을 변경하는 것도 가능하다.
class Data { int x; }
class ReferenceParamEx{
public static void main(String[] args){
Data d = new Data();
d.x = 10;
change(d);
}
static void change(Data d){ // 참조형 매개변수
d.x = 1000;
}
static void change(int d){ // 기본형 매개변수
d.x = 1000;
}
}
* chage매서드의 매개변수가 참조형이 아니라 기본형이라면 d.x=1000;이 인스턴스 d에 반영되지 않고 그대로 d.x = 10;이 된다.
* 배열도 객체와 같이 참조변수를 통해 데이터가 저장된 공간에 접근하므로, 매개변수로 배열이 들어가면 같은 결과를 얻게된다.
참조형 반환타입
매개 변수뿐만 아니라 반환타입도 참조형이 될수 있다.
class Data{ int x; }
class ReferenceEx{
public static void main(String[] args){
Data d = new Data();
d.x = 10;
Data d2 = copy(d);
}
static Data copy(Data d){
Data tmp = new Data();
tmp.x = d.x;
return tmp;
}
}
위 코드를 실행하명 d.x = 10, d2.x = 10이 된다
* 반환 타입이 참조형이라는 것은 메서드가 객쳋의 주소를 반환한다는 것을 의미한다.
'Language > Java' 카테고리의 다른 글
4.4 객체 지향 프로그래밍 (상속, 오버라이딩) (0) | 2021.07.09 |
---|---|
4.3 객체 지향 프로그래밍 (오버로딩, 생성자) (0) | 2021.07.08 |
4.1 객체 지향 프로그래밍 (클래스와 객체) (0) | 2021.07.06 |
문자열 함수 종류 (0) | 2021.07.05 |
3. 연산자 (1) | 2021.07.01 |