3.8 기본형 매개변수와 참조형 매개변수
- 메서드를 호출할 때 매개변수로 지정한 값을 메서드의 매개변수에 복사해서 넘겨준다
- 기본형 매개변수 : 기본형 값이 복사되기 때문에 변수의 값을 읽기만 할 수 있다
- 참조형 매개변수 : 인스턴스의 주소가 복사되기 때문에 변수의 값을 읽고 변경할 수 있다
3.9 참조형 반환타입
- 반환타입도 참조형이 도리 수 있다
- 반환하는 값의 타입이 참조형, 즉 객체의 주소를 반환한다는 의미
3.10 재귀호출
- 메서드 내부에서 메서드 자신을 다시 호출하는 것을 재귀호출이라고 하고, 재귀호출을 하는 메서드를 재귀 메서드라고 한다
- 호출된 메서드는 값에 의한 호출을 통해 원래의 값이 아닌 복사된 값으로 작업하기 때문에 호출한 메서드와 고나계없이 독립적인 작업 수행이 가능하다
- 반복문과 유사
- 왜 반복문 대신 재귀호출을 사용?
- 재귀호출이 주는 논리적인 간결함 때문
- 하지만 반복문보다 수행 시간이 더 필요하기 때문에 비효율적
- 재귀호출이 계속 일어나고 스택에 데이터가 계속 쌓이게 되면 스택오버플로우 에러가 발생
3.11 클래스 메서드(static 메서드)와 인스턴스 메서드
- 클래스 메서드는 객체를 생성하지 않고도 클래스 이름.메서드 이름과 같은 식으로 호출이 가능
- 인스턴스 메서드는 인스턴스 변수와 관련된 작업을 하는, 즉 메서드의 작업을 수행하는데 인스턴스 변수를 필요로 하는 메서드이다.
- 인스턴스 메서드는 인스턴스를 생성해야 호출할 수 있다
- 인스턴스와 관계없는 메서드를 클래스 메서드라고 한다
- 클래스 변수는 인스턴스를 생성하지 않아도 사용가능하다
- static이 붙은 변수는 클래스가 메모리에 올라갈 때 이미 자동적으로 생성되기 때문
- 클래스 메서드는 인스턴스 변수를 사용할 수 없다
- 인스턴스 변수는 인스턴스가 반드시 존재해야 사용할 수 있는데 클래스 메서드는 인스턴스 생성 없이 호출 가능하므로 클래스 메서드가 호출되었을 때 인스턴스가 존재하지 않을 수도 있다. 그래서 클래스 메서드에서 인스턴스 변수의 사용을 금지한다
- 메서드 내에서 인스턴스 변수를 사용하지 않는다면 static을 붙이는 것을 고려한다
- 호출 시간이 짧아지므로 성능이 향상된다
3.12 클래스 멤버와 인스턴스 멤버간의 참조와 호출
- 같은 클래스에 속한 메머븓ㄹ 간에는 별도의 인스턴스 생성 없이 서로 참조 호출이 가능
- 단 클래스 멤버가 인스턴스 멤버를 참조 또는 호출하는 경우에는 인스턴스 생성 필요
- 인스턴스 멤버간의 호출은 문제가 없음