데이터 타입 : 기본타입(정수타입, 실수타입, 논리타입) + 참조타입 (배열타입, 열거타입, 클래스, 인터페이스)

* 참조 : reference ,  참조 타입은 선언된 변수는 메모리 번지를 값으로 가짐, 즉 번지를 통해 객체 참조
* 변수 : 스택 영역에 생성, 객체는 heap영역에 생성

 





메모리 사용 영역
-운영체제에서 할당받은 메모리 영역 : 메소드 영역, 힙 영역, 스레드

1. 메소드 영역 : 클래스(.class)들을 클래스 로더로 읽어 클래스별 런타임 상수풀, 필드 데이터, 메소드 데이터, 메소드 코드, 생성자 코드 등을 분류해서 저장,  JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역


2. 힙(Heap) 영역 : 객체와 배열이 생성되는 영역, 힙 영역에서 생성된 객체와 배열은 JVM 스택 영역의 변수나 다른 객체 필드에서 참조


3. JVM 스택(Stack) 영역 : JVM 스택 영역은 각 스레드마다 하나씩 존재하며 스레드 시작할 때 할당


* 자바 프로그램에서 추가적으로 스레드를 생성하지 않았다면 main 스레드만 존재하므로 JVM 스택도 하나이다
 JVM 스택은 메소드 호출할 때마다 프레임(Frame)을 추가(push)하고 메소드 종료되면 해당 프레임을 제거(pop) 동작 수행
 예외 발생 시 printStackTrace() 메소드로 보여주는 stack Trace의 각 라인은 하나의 프레임을 표현


- Null : 참조 타입 변수에서 힙 영역의 객체를 참조하지 않는다. null로 초기화된 참조 변수는 스택 영역에 저장
- NullPointerExcepction :참조할 객체 없을 때 null 값 가지는 참조 타입 변수 사용 시 발생. arr 사용할 때 주로 발생


- String과 Char 차이 : Char 는 문자, '' 안에 2바이트 내 글자 허용 / String 은 문자열, "" 안에 사용 가능, 참조 변수

 

- <이것이 자바다1>. 한빛 미디어 

'JAVA' 카테고리의 다른 글

열거 타입  (0) 2019.06.18
배열  (0) 2019.06.18
Scanner를 통한 데이터 입력하기  (0) 2019.06.18
반복문 예제_for문(별 그리기 ver.5)  (0) 2019.06.18
반복문 예제_for문(별 그리기 ver.4 )  (0) 2019.06.18

+ Recent posts