[Zero-base] 1-6. 변수와 자료형
자바 언어의 자료형
- 변수를 선언하기 위해서는 어떤 자료인지 알아야하므로 자료형을 먼저 파악해야 함
프로그래밍에서 주로 사용하는 데이터의 종류 (예. 개인신상기록카드)
- 숫자 (수치)
· 나이 → 정수형 (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)의 정밀도로 저장 가능
- 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진수 '0001' 에서 2진수 '0001'를 더하면 '0010'이 되는 점을 확인
- 두 값을 더하여서 32bit를 모두 '0' 채우고 자료공간을 벗어나도록 만들면 '0'을 만들 수 있음
- 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의 보수로 부르기로 함
- 10진수 값이 '21'인 2진수 '0000_0000_0000_0000_0000_0000_0001_0101'를 int형 변수 'l1'으로 생성 및 초기화
- 해당 2진수의 2의 보수를 취한 값을 변수 'l2'로 초기화
- 두 변수 값을 더한 결과가 '0'임을 확인
- 임의의 값 '0b0101_1111_1010_0000_0011_1111_0101_0101'을 변수 'm1'으로 지정
- 해당 값의 2의 보수를 취한 값을 변수 'm2'로 지정
- 두 변수 값을 더한 결과가 '0'임을 확인
- int형 최대값을 2진수로 표현하는 경우
· 부호 비트를 '0'으로 설정하고 모든 값을 '1'로 지정 (2147483647)
- int형 최소값을 2진수로 표현하는 경우
· 부호 비트를 '1'으로 설정하고 최대값의 2의 보수를 취함 (-2147483648)
- short형 덧셈의 경우 내부적으로 int형으로 계산되므로 값을 저장할 변수를 int형으로 생성하지 않으면 에러 발생
- short형으로 저장하고 싶은 경우에는 강제 형변환 필요
- 가수 (Mantissa) - 실제 값을 저장하는 부분으로 15자리 (double)의 정밀도로 저장 가능
- 지수 (Exponent) - 부호이며 정수이며 범위는 -1023 ~ 1024 (double)
- int형 최대값에 '+ 1' 한 경우 값이 커지고 부호가 변경되는 현상 (오버플로우)
- int형 최소값에 '- 1' 한 경우 값이 줄어들고 부호가 변경되는 현상 (언더플로우)
- char형 (2 byte)에 직접 값을 대입하거나, 유니코드를 사용할 수 있음