CHAPTER5~CHAPTER7
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 |