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 | 31 |
Tags
- 자바의 정석 기초편 ch1
- 자바의 정석 기초편 ch4
- 코드로 시작하는 자바 첫걸음
- 자바의 정석 기초편 ch13
- @Aspect
- 자바의 정석 기초편 ch7
- 자바의 정석 기초편 ch8
- 스프링 db2 - 데이터 접근 기술
- 게시글 목록 api
- 자바의 정석 기초편 ch14
- 스프링 mvc1 - 스프링 mvc
- 스프링 mvc2 - 타임리프
- 자바의 정석 기초편 ch12
- 스프링 입문(무료)
- 스프링 mvc2 - 로그인 처리
- 2024 정보처리기사 수제비 실기
- jpa 활용2 - api 개발 고급
- 스프링 db1 - 스프링과 문제 해결
- 스프링 mvc2 - 검증
- 자바의 정석 기초편 ch9
- 타임리프 - 기본기능
- 스프링 mvc1 - 서블릿
- 자바의 정석 기초편 ch5
- 스프링 고급 - 스프링 aop
- 자바의 정석 기초편 ch2
- 2024 정보처리기사 시나공 필기
- 자바의 정석 기초편 ch6
- 자바의 정석 기초편 ch3
- 자바의 정석 기초편 ch11
- jpa - 객체지향 쿼리 언어
Archives
- Today
- Total
나구리의 개발공부기록
자바의 정석 기초편 ch2 - 10 ~11 [기본형과 참조형, 기본형의 종류와 범위] 본문
값의 타입
(1) 값(data) : 8개의 기본형 데이터
- 문자 : char
- 숫자
- 정수 : byte, short,int(가장 많이 사용),long
- 실수 : float, double
- 논리 : boolean
- true
- false
(2) 기본형 (Primitive type) - 8개(실제 값을 저장)
- boolean
- char
- byte - 1byte
- short - 2byte
- int - 4byte
- long - 8byte
- float
- double
(3) 참조형 (Reference type) : 무한갯수
- 기본형을 제외한 나머지 (String, System 등)
- 메모리 주소를 저장 (4byte - 32bit JVM 또는 8byte - 64bit JVM)
- 4byte로 메모리주소를 표현할 수 있는 숫자의 최대값은 약 40억byte(4GB) - 8byte 는 1600만 TB 까지 가능하지만 실제로 프로그램에서 사용할 수 있는 메모리 수는 2GB (32bit) 1TB(64bit) 정도로 운영체제가 제한함
Date today; // 참조형 변수 today를 선언
today = new Date(); // today에 객체의 주소를 저장
기본형 타입(Primitive Type)의 종류와 크기
- 논리형(boolean) - true와 false중 하나를 값으로 갖으며 조건식과 논리적 계산에 사용
- 문자형(char) - 문자를 저장하는데 사용되며 변수 당 하나의 문자만을 저장할 수 있다(여러 문자를 사용할 경우 String으로 사용)
- 정수형 - 정수 값을 저장하는데 사용되며 주로 사용하는 것은 int와 long(아주 큰 정수)이며, byte는 이진 데이터를, short(잘 사용하 않음) 는 c언어와의 호환을 위해 추가 됨
- 실수형 - 실수 값을 저장하는 데 사용, flaot와 double이 있음
종류 | 1byte | 2byte | 3byte | 4byte |
논리형 | boolean | |||
문자형 | char | |||
정수형 | byte | short | int(기본타입) | long |
실수형 | float | double(기본타입) |
- boolean은 true와 false만 사용 -> 1bit만 있어도 됨, 하지만 자바에서 데이터를 다루는 최소 단위가 byte이므로 1byte를 사용
- 1bit = 2진수 1자리
- 1byte = 8bit
- 2byte의 문자 체계인 유니코드를 사용하고 있어 char 타입은 2byte를 사용 (참고로 C언어는 1byte)
- int보다 짧아서 short, int보다 길어서 long으로 불림
- float(부동소수점)타입보다 정밀도가 2배 높아서 double로 불림
기본형 타입(Primitive Type)의 표현범위
byte b; // b를 선언 했을 시 1byte로(8bit) 저장 , 1bit는 2진수 한자리 (0 or 1)
b = 3; // 10진수 3이 2진수로 변환 되어 저장
(1) bit
- 1bit : 0, 1 -> 총 2개 표현 (2^1)
- 2bit : 00, 01, 10, 11 -> 총 4개 표현 (2^2)
- 8bit : 총 256개의 값 표현 (2^8)
- nbit로 표현할 수 있는 값의 개수 -> 2^n
- nbit로 표현할 수 있는 부호없는 정수의 범위 : 0 ~ 2^n -1
- ex) 8bit일 경우 : 0 ~ 255 까지(0을 포함해야 함)
- nbit로 표현할 수 있는 부호있는 정수의 범위 : -2^(n-1) ~ 2^(n-1)-1
- 자바에서의 정수형은 모두 부호가 있음
- ex) 8bit일 경우 : -128 ~ 127
(2) byte
- byte(1byte = 8bit) 저장범위 : -2^7 ~ 2^7 -1
- 저장형식 : S l 7bit
- S = 부호비트(sign bit)
- 0(양수) l 7 bit : 128개 (0 ~ 127)
- 1(음수) l 7 bit : 128 ( -1 ~ -128)
- 총 2^8 = 256
(3) short
- short(2byte = 16bit) 저장범위 : -2^15 ~ 2^15 -1
- 저장형식 : S l 15bit (-32,768 ~ 32,767)
(4) char
- char(2byte = 16bit) 저장범위 : 0 ~ 2^16-1
- 표현형식 : 16bit : 0 ~ 65,535
- 문자 A 를 변수에 저장할 경우 문자 A의 문자코드(65 - 10진수)가 2진수로 변환되어 저장됨
- 문자코드 = 문자마다 일련번호를 붙혀놓은 것, 음수를 사용할 필요가 없어 부호비트가 없음 -> 모든 값을 양수로 저장
(5) int
- int(4byte = 32bit) 저장범위 : -2^31 ~ 2^31 -1
- 저장형식 : S l 31bit : 약 -20억 ~ 20억
(6) long
- long(8byte = 64bit) 타입의 값 저장범위 : -2^63 ~ 2^63 -1
- 저장형식 : S l 63bit : 약 -800경 ~ 800억
** 참고사항
- 800경을 넘는 수를 다뤄야할 경우 실수타입이나 Biginteger클래스를 사용
- 정수형과 실수형에는 모두 부호비트가 있음
(8) float
- float(4byte = 32bit) 저장범위
- 양수 : 1.4 X 10^-45 ~ 3.4 X 10^38
- 음수 : - 3.4 X 10^38 ~ -1.4 X 10^-45
- float 타입으로 표현 불가능한 범위 : -1.4 X 10^-45 ~ 1.4 X 10^-45
- 저장형식 : S l E(8) l M(23) : 1+8+23 = 32bit = 4byte
- S: 부호 , E : 지수 , M : 가수
- 정밀도(가수의 자리수) : 10진수로 7자리까지 (오차없이 표현가능한 범위)
- 가수는 23자리지만 정규화를 통해서 24자리까지 저장 가능
- 10^7 < 2^24 < 10^8
- 저장형식 : S l E(8) l M(23) : 1+8+23 = 32bit = 4byte
(9) double
- double(8byte = 64bit) 저장범위
- 정밀도 : 10진수로 15자리(오차없이 표현가능한 범위)
- 저장형식 : S l E(11) l M(52):1+11+52 = 64bit = 8byte
** 참고사항
- 실수형은 저장형식의 차이로 인하여 정수형 보다 큰 값을 저장할 수 있지만 저장하려는 값과 실제 저장하는 값의 오차가 발생할 수 있음
- 정밀도(가수의 자리수)가 중요한 이유
- 실수형을 저장할 때 단순히 크기로만 타입을 정하면 안되고 정확한 계산이 필요한 경우에는 정밀도가 중요함
- 7자리의 정밀도는 생각보다 높지 않으므로 정밀도가 높은 double타입이실수형의 디폴드 값
** 출처 : 남궁성의 정석코딩_자바의정석_기초편 유튜브 강의
'유튜브 공부 > JAVA의 정석 기초편(유튜브)' 카테고리의 다른 글
자바의 정석 기초편 ch2 - 14 ~ 16 [scanner(화면에서입력받기),정수형의오버플로우] (0) | 2023.11.02 |
---|---|
자바의 정석 기초편 ch2 - 12 ~ 13 [printf를 이용한 출력] (0) | 2023.11.02 |
자바의 정석 기초편 ch2 - 7 ~ 9 [문자,문자열 리터럴, 문자열 결합,두 변수의 값 교환] (0) | 2023.11.01 |
자바의 정석 기초편 ch2 - 6 [리터럴의 접두사와 접미사] (1) | 2023.11.01 |
자바의 정석 기초편 ch2 - 4 ~ 5 [변수의타입 , 상수, 리터럴] (0) | 2023.10.30 |