cs/java-spring-boot

[Zero-base] 1-6. 변수와 자료형

Lomo 2022. 1. 11. 20:32
반응형

자바 언어의 자료형

 - 변수를 선언하기 위해서는 어떤 자료인지 알아야하므로 자료형을 먼저 파악해야 함

 

프로그래밍에서 주로 사용하는 데이터의 종류 (예. 개인신상기록카드)

 - 숫자 (수치)

 · 나이 → 정수형 (int, long, short, byte)

 · 키, 몸무게, 시력 → 실수형 (double, float)

 - 문자 (문자열)

 · 성별 → 문자형

 · 이름, 주소, 종교 → 문자열

 - 불린형 (True/False)

 · 질병 → 논리형

 - 그 외

 · 가족사항, 학력사항 → 배열 (Array[], List)

 · 생일 또는 입사일 → 날짜형 (Date, LocalDate)

 

 

자바에서 처리하는 자료형

 - 기본형

 ·  변수의 저장 공간에 값 자체를 저장

 · 논리형 - boolean 

 · 문자형 (캐릭터 타입) - char

 · 정수형 - byte, short, int, long

 · 실수형 - float, double

 - 참조형

 · 변수의 저장 공간에 참조 값을 저장

 · 배열 - Array[]

 · 클래스 - String, Date, Random

 · 인터페이스 - Runnable, Enumeration 등

 · 참조는 원래 저장 공간의 메모리 주소를 저장한다는 의미

 

자료형 정리

- 논리형 

 · boolean (1 byte)

- 문자형 

 · char (2 byte)

- 정수형

 · byte (1 btye)

 · short (2 byte)

 · int (4 byte)

 · long (8 byte)

- 실수형

 · float (4 byte)

 · double (8 byte)

 

자료형의 크기 (단위 : Bit)

int형 : S(1) + (31)

double형 : S(1) + (63)

float형 : S(1) + E(8) + M(23)

double형 : S(1) + E(11) + M(52)

 * S 부호 (Sign bit)

  0이면 양수

  1이면 음수

 * E 지수 (Exponent) - 부호이며 정수

  -127 ~ 128 (float)

  -1023 ~ 1024 (double)

 * M 가수 (Mantissa) - 실제 값을 저장하는 부분

  10진수로 7자리 (float)

  15자리 (double)의 정밀도로 저장 가능

 

2진수 뺄셈 예시 (1)

- JDK 1.7부터 under_bar 사용 가능

- 따라서, '0b00000000000000000000000000001100' 과 '0b0000_0000_0000_0000_0000_0000_0000_1100'은 같음

- 2진수 '0000_0000_0000_0000_0000_0000_0000_1100'는 10진수로 표현하면 12임

- int 자료형의 포맷에서 부호비트를 변경한 경우 (0b1000_0000_0000_0000_0000_0000_0000_1100) -12가 되지 않음

 

2진수 뺄셈 예시 (2)

- 2진수 '0001' 에서 2진수 '0001'를 더하면 '0010'이 되는 점을 확인

- 두 값을 더하여서 32bit를 모두 '0' 채우고 자료공간을 벗어나도록 만들면 '0'을 만들 수 있음

 

 

2진수 뺄셈 예시 (3)

- int k1의 값 2진수 '1100' 어떤 값을 더하면 '0'을 만들 수 있는지 확인

-  2진수 '1100' 에 '0b1111_1111_1111_1111_1111_1111_1111_0011'을 더하면 '0' 됨

- '0b1111_1111_1111_1111_1111_1111_1111_0011'은 int k1에 대한 1의 보수에 1을 더한 값

- 따라서, 1의 보수에 1를 더한 값을 2의 보수로 부르기로 함

 

 

2진수 뺄셈 예시 (4)

- 10진수 값이 '21'인 2진수 '0000_0000_0000_0000_0000_0000_0001_0101'를 int형 변수 'l1'으로 생성 및 초기화

- 해당 2진수의 2의 보수를 취한 값을 변수 'l2'로 초기화

- 두 변수 값을 더한 결과가 '0'임을 확인

 

 

2진수 뺌셈 예시 (5)

- 임의의 값 '0b0101_1111_1010_0000_0011_1111_0101_0101'을 변수 'm1'으로 지정

- 해당 값의 2의 보수를 취한 값을 변수 'm2'로 지정

-  두 변수 값을 더한 결과가 '0'임을 확인

 

 

long형 2진수 표현 (64-bit)

 

 

정수형 int의 최대값과 최소값

- int형 최대값을 2진수로 표현하는 경우

 · 부호 비트를 '0'으로 설정하고 모든 값을 '1'로 지정 (2147483647)

- int형 최소값을 2진수로 표현하는 경우

 · 부호 비트를 '1'으로 설정하고 최대값의 2의 보수를 취함 (-2147483648)

 

 

short형 계산 예제 (1)

- short형 덧셈의 경우 내부적으로 int형으로 계산되므로 값을 저장할 변수를 int형으로 생성하지 않으면 에러 발생

- short형으로 저장하고 싶은 경우에는 강제 형변환 필요

 

 

short형 계산 예제 (2)

 

 

double형의 표현 방식

 

- 가수 (Mantissa) - 실제 값을 저장하는 부분으로 15자리 (double)의 정밀도로 저장 가능

- 지수 (Exponent) - 부호이며 정수이며 범위는 -1023 ~ 1024 (double)

 

 

오버플로우 예시

- int형 최대값에 '+ 1' 한 경우 값이 커지고 부호가 변경되는 현상 (오버플로우)

 

 

언더플로우 예시

- int형 최소값에 '- 1' 한 경우 값이 줄어들고 부호가 변경되는 현상 (언더플로우)

 

 

char형 표현 예시

- char형 (2 byte)에 직접 값을 대입하거나, 유니코드를 사용할 수 있음

 

 

유니코드 중에서 한글만 출력하는 소스 코드 예시

 

 

반응형