개발바닥

데이터 타입 본문

자바

데이터 타입

라이언 2019. 3. 19. 13:29
반응형

자바에는 데이터 타입을 크게 2가지로 나눠볼 수 있다.

아래 그림처럼 1. 기본 타입 (primitive type) 2. 참조 타입 (reference type) 이렇게 나눌 수 있다.






기본 타입 변수 - 실제 값을 변수 안에 저장

참조 타입 변수 - 주소를 통해 객체 참조


기본 타입 변수에 값은 스택(stack) 영역에 저장하고 있고, 참조 타입 변수에 값은 힙(heap) 영역에 저장하고 있다.


JVM이 사용하는 메모리 영역을 세 영역으로 구분할 수 있다.


  1.  메소트 영역 (Method Area)
  2.  스택 영역 (Stack Area)
  3.  힙 영역 (Heap Area)


메소드 영역 

  • JVM 시작할 때 생성
  • 로딩된 클래스 바이트 코드 내용을 분석 후 저장
  • 모든 스레드가 공유


힙 영역

  • JVM 시작할 때 생성
  • 객체/배열 저장
  • 사용되지 않는 객체는 가비지 컬렉터가 자동 제거


JVM 스택

  • 스레드 별 생성
  • 메소드 호출할 때마다 Frame을 스택에 추가(push)
  • 메소드 종료하면 Frame 제거(pop)


자바에서 자주 사용하는 String 타입은 문자열을 저장하는 클래스 타입이다.

클래스 이므로 참조 타입 변수이기 때문에 주소를 통해 객체를 참조한다.


자바를 처음 접하시는 분들이라면 많이 헷갈리는 부분 중 하나로 아래 그림처럼 변수명이 다르더라도 참조 영역이 같은 경우인데요.


일반적으로 참조 타입 변수는 스택 영역에 저장하고 객체는 힙 영역에 저장하는데 문자열 리터럴이 동일하다면 객체를 공유를 합니다.

공유하기 싫다면 new 연산자를 이용해서 String 객체를 생성하시면 리터럴 문자열이 동일하더라도 서로 다른 주소를 참조하게 됩니다.

 

반응형

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

숫자와 문자열 사이의 변환  (0) 2019.03.20
문자열 다루기  (0) 2019.03.20
연산자의 종류와 우선 순위  (0) 2019.03.19
정렬 - 5 [ 퀵 정렬 ]  (0) 2018.11.18
정렬 - 4 [ 셸 정렬 ]  (0) 2018.11.17
Comments