# 클래스 : 객체를 정의 해놓은 것.
- 용도 : 객체를 생성하기 위해 사용
# 인스턴스화 : 클래스로부터 객체를 만드는 과정
# 인스턴스 : 어떤 클래스로부터 만들어진 객체
ex ) 책상은 책상 클래스의 인스턴스이다.
# 인스턴스의 생성
클래스명 변수명; // 인스턴스 선언
변수명 = new 클래스명(); // 인스턴스 생성
=> 클래스명 변수명 = new 클래스명(); // 인스턴스 선언 및 생성
: 인스턴스를 사용하기 위해서는 클래스를 정의한 후, Main에서 인스턴스 선언 및 생성을 해주면 사용할 수 있다.
인스턴스 안에 선언된 멤버 변수 및 메소드를 사용하기 위해서는 .(점)을 사용하면 된다.
인스턴스변수명.멤버변수명 // 멤버 변수에 값을 넣거나 사용할 때
인스턴스변수명.메소드명() or .메소드명(매개변수...) // 메소드를 사용할 때
만약 접근 제어자가 public이 아니라면 직접 접근이 제한 될 수 있다.
Car c1 = new Car();
Car c2 = new Car();
c2 = c1;
: 다음과 같은 코드를 수행하게 되면 인스턴스 변수는 참조변수이므로
c1의 참조값이 c2에 저장되어 c1이 가리키는 인스턴스를 c2도 같이 가리키게 된다.
c1이나 c2의 값을 변경하게 되면 같은 곳을 참조하고 있으므로 둘의 값은 동일하게 변경된다.
이처럼 둘 이상의 참조변수가 하나의 인스턴스를 참조할 순 있지만, 하나의 참조변수가 여러개의
인스턴스를 참조할 순 없다.
# 클래스 다이어그램 그리기
- 자세한 참고페이지 (http://seungdols.tistory.com/523)
# JVM 메모리 구조
: 응용 프로그램이 실행되면 JVM은 프로그램을 수행하는데 필요한 메모리를 할당받고 JVM은 메모리의 용도에 따라 영역을 나누어 관리.
1. Method Area
= 프로그램 실행 중 어떤 클래스가 사용되면 해당 클래스의 파일(*.class)을 읽어서 분석 후에 클래스 데이터를 메소드 영역에 저장한다.
이 때, 클래스 변수도 같이 이 영역에 생성됨.
2. Heap
= 인스턴스가 생성되는 공간으로서, 프로그램 실행 중에 인스턴스가 생성되면 이곳에 인스턴스들이 모두 저장. 인스턴스 변수가 생성되는 곳
3. Call stack ( Execution stack )
= 메소드의 작업에 필요한 메모리 공간이며, 메소드가 호출되면 Call stack에 호출된 메소드를 위한 메모리 할당.
메소드가 수행되는 동안 지역 변수, 매개 변수, 연산의 중간 결과 등을 저장한다. 메소드가 작업을 마치면 할당된 메모리가 반환된다.
메소드마다 공간이 구분되며 첫번째로 호출된 메소드가 제일 밑에 위치하며 차례대로 쌓인다. 가장 마지막에 들어온 메소드가 먼저 실행되어
반환되는 LIFO 구조이다.
- 자세한 참고 페이지 ( http://cafe.naver.com/jjdev/227 )
'Java' 카테고리의 다른 글
상속, 포함 (0) | 2016.01.30 |
---|---|
소수점 자리 표시 방법 (0) | 2016.01.25 |
향상된 for문 (0) | 2016.01.22 |
자료형 및 산술 연산 (0) | 2016.01.21 |
배열 (0) | 2015.12.18 |