CHAPTER5~CHAPTER7

2019. 1. 21. 21:30

5장 배열

1.5 배열의 복사

- 배열의 복사는 for문보다 System.arraycopy()를 사용하는 것이 효율적이다.


6장 객체지향프로그래밍


1.2 객체지향언어

1.2.1 객체지향언어의 주요 특징

1) 코드의 재사용성이 높다.

- 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.

2) 코드의 관리가 용이하다.

- 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.

3) 신뢰성이 높은 프로그래밍을 가능하게 한다.

- 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 

  코드의 중복을 제거하여 코드의 불일치로 인한 오작동을 방지할 수 있다.


3. 변수와 메서드

3.1 선언위치에 따른 변수의 종류

class Variables {
	int iv;			// 인스턴스 변수
	static int cv;		// 클래스변수(static 변수, 공유변수)

	void method() {
		int lv = 0;		// 지역변수
	}
}

변수의 종류 

선언위치 

생성시기 

 클래스 변수

(class variable)

 클래스 영역

 클래스가 메모리에 올라갈 때

인스턴스변수

(instance variable) 

 인스턴스가 생성되었을 때

지역변수

(local variable) 

 클래스 영역 이외의 영역

(메서드, 생성자, 초기화 블럭 내부)

변수 선언문이 수행되었을 때 


3.2 클래스변수와 인스턴스 변수

- 인스턴스 변수는 인스턴스가 생성될 때마다 생성되므로 인스턴스는 각기 다른 값을 갖지만, 클래스 변수는 모든 인스턴스가 하나의 저장공간을 공유하므로 항상 공통된 값을 갖는다.


3.7 JVM의 메모리 구조

3.7.1 메서드영역(method area)

- 프로그램 실행 중 사용되는 클래스에 대한 정보를 저장.

  이 때 클래스의 클래스 변수도 이 영역에 함께 저장됨.

3.7.2 힙

- 프로그램 실행 중 생성되는 인스턴스에 대한 정보를 저장

3.7.3 호출스택

- 메서드의 작업에 필요한 메모리 공간을 제공.

  메서드 안에 메서드를 호출할 경우 스택형식으로 쌓이며, 가장 마지막 호출 메서드부터 종료된다.


3.10 재귀호출

- 반복문에 비해 성능이 좋지 않다.

- 대신, 복잡한 로직 처리 요건을 하고자 할 때 반복문에 비해 간결하고 직관적이다.

- 따라서, 상황에 맞게 알아서 잘 사용해야 한다.


3.11 클래스 메서드와 인스턴스 메서드

- 인스턴스 메서드는 인스턴스 변수/메서드와 관련된 작업을 하는 메서드로 개발하여야 한다.

- 클래스 메서드는 인스턴스 변수/메서드와 관련이 없는 작업을 하는 메서드로 개발하여야 한다. 

   -> 클래스 메서드 내부에서 인스턴스 변수 조작 불가 && 인스턴스 메서드보다 성능이 더 빠르다.

   -> 이미 메모리(Method Area)에 올라가 있기 때문



'자바의정석' 카테고리의 다른 글

CHAPTER 11  (0) 2019.01.31
CHAPTER 9  (0) 2019.01.29

+ Recent posts