티스토리 뷰
<Primitive 변수 : 원초적인 변수.자바에서 제공하는 기본적인 데이터 형의 변수.>
정수형 : int, short int, long int
실수형 : float, double
바이트형 : byte
논리형 : boolean
문자형 : char
<Object변수 : 객체 변수>
정수형 : Integer, Short Integer, Lomg Integer
실수형 : Float, Double
바이트형 : Byte
논리형 : Boolean
문자형 : Char
그렇다면, 왜 변수를 primitive타입과 object타입으로 나누어 놨을까?
(ex)
int i1 = 10;
Integer i2 = new Integer(10);
HashMap<String , Integer> map = new HashMap<String , Integer>();
map.put("윤상아", i1);
map.put("윤상아", i2);
Integer는 클래스를 내부적으로 들어가보면 number클래스를 상속받고 number클래스는 object클래스를 상속받는다.
따라서 Integer클래스는 메모리에 object클래스가 가지는 변수들과 number클래스가 가지는 변수들을 모두 담고 있고,
위의 예시처럼 Integer 인스턴스를 만들면 4byte의 객체를 가지게 된다. 하지만 상속 받는 모든 클래스들의 변수들을 가지고 있으므로 메모리의 사이즈가 더 크다.
그럼에도 불구하고 object변수가 존재하는 이유는
자바에서 제공하는 자료구조에는 데이터를 넣을때 객체로만 넣을 수 있다.
map.put(k 키, v 값)==> v는 객체만 들어간다.
primitive타입을 사용하더라도 내부적으로 instance화하여 데이터를 넣는다.
그렇다면 어차피 객체화하여 데이터가 들어감에도 primitive타입이 존재하는 이유는 무엇일까
new하여 객체를 만들면 해당 객체가 상속받는 모든 클래스들의 모든 변수들을 다 가지므로 메모리사이즈가 커지기 때문이다.
또한 원천적인primitive타입만이 비트연산이 가능하다.(객체object타입은 비트연산 불가능)
일반적으로 20/5=4처럼 사칙연산을 할 때도 primitive타입 비트연산이 더 적은 비용이 든다.
object형으로도 계산은 가능하나 암복호화 과정을 거쳐 계산하기 때문에 비용이 많이 든다.
따라서 자바는 객체의 세상임에도 불구하고 primitive타입이 존재하는 것이다.
'Java' 카테고리의 다른 글
Array와 List (0) | 2018.11.19 |
---|---|
switch case문, 다양한 for문 (java의 iterator for문) (0) | 2018.11.19 |
바이트, 비트 연산(쉬프트 연산, 2의 보수 처리 등) (0) | 2018.11.19 |
객체, Class, Instance (0) | 2018.11.19 |
JDK, JRE, JVM (0) | 2018.11.19 |
- Total
- Today
- Yesterday
- 활성화된 파일 위치 찾기
- Whitelabel Error Page(404 Not Found)에러
- gradle 종속성
- Autoscroll from Source
- runtimeOnly
- 웹서버설치
- compileOnly
- Spring Security
- hot swapping
- 패키지 위치 찾기
- 이데일리 코딩 챌린지
- apache tomcat 설정
- java
- EDAILY CODING CHALLENGE
- spring loaded
- 알고리즘
- springboot에서 jsp호출
- 기초입문
- eclipse disable welcome page
- Encoding UTF-8
- mysql 연동
- webprogramming
- spring 기본 login
- tomcat 환경변수
- Apache설치
- 라이브러리 종속성
- 나눔고딕코딩
- login page
- SQL 개발툴
- DB 툴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |