Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 자바 디자인 패턴
- 몽고디비 렘
- 도메인 주도 개발 시작하기
- 파이썬
- 도메인 주도 개발
- 12761 돌다리
- 고 배열
- golang
- http 개념
- 자바 디자인패턴
- http 완벽가이드
- 백준 사이트
- 백준
- flask
- 우분투
- hadoop
- domain driven develop
- 백준 파이썬
- MongoDB Realm
- 트리 순회
- 백준 12761번
- ddd
- go
- 하둡
- 자바
- String 함수
- 12761번 돌다리
- 백준 12761
- 정렬
- golang struct
Archives
- Today
- Total
개발바닥
데이터 타입 본문
반응형
자바에는 데이터 타입을 크게 2가지로 나눠볼 수 있다.
아래 그림처럼 1. 기본 타입 (primitive type) 2. 참조 타입 (reference type) 이렇게 나눌 수 있다.
기본 타입 변수 - 실제 값을 변수 안에 저장
참조 타입 변수 - 주소를 통해 객체 참조
기본 타입 변수에 값은 스택(stack) 영역에 저장하고 있고, 참조 타입 변수에 값은 힙(heap) 영역에 저장하고 있다.
JVM이 사용하는 메모리 영역을 세 영역으로 구분할 수 있다.
- 메소트 영역 (Method Area)
- 스택 영역 (Stack Area)
- 힙 영역 (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