포스트

10. 자바 기초(4)

자바의 기초 언어를 공부하자.

10. 자바 기초(4)

변수(Variables)

데이터를 저장하는 메모리

  • 변수 선언 : 메모리를 준비시키는 명령문
1
2
3
4
5
메모리 타입(Data type) 메모리 명(변수 명);
메모리명(변수 명) =;

int a;
a = 1;
짤지식
  • = : assgnment operator (대입, 할당, 배정)

Data type

  • Primitive(원시, 기본) Data Type
    1. 정수 - byte(1), short(2), int(4), long(8)
    2. 부동 소수점 - float(4), double(8)
    3. 논리 - boolean
    4. 문자 - char(2)
  • User Defined Data Type
    1. 클래스

Data type의 역할

  • 메모리 사용을 제어
1
2
3
4
5
6
int i;
float f;
i = 30;           // 0x0000001E (2의 보수)
f = 30;           // 0x41E00000 (IEEE-754)
char c = '가';    // 0xAC00
boolean b = true; // 0x01

실제 메모리 상태는 4byte 안에 상기의 2진수 값이 들어가있음 하지만 이해를 쉽게 하기 위해 추상화 시켜 넣는 느낌

짤지식
  • whitespace
    • space (공백)
    • tap
    • newline (줄바꿈)

메모리 크기와 값의 범위

정수 메모리 크기와 값의 범위

1byte = 8bit 0~255 : 256개 : -128 ~ 127
2byte = 65536개 : -32768 ~ 32767
4byte = $2^{32}$ : -2,147,483,648 ~ 2,147,483,647
8byte = $2^{64}$ : 약 -922경 ~ +922경
byte(1byte) b = -128(int 타입 정수 리터럴)

  • 4byte 값을 1byte 메모리에 저장할 수 없지만 리터럴일 경우, 저장할 수 있는 값이면 허락함

b = -129; ← 1byte의 범위를 넘어간 값은 저장 불가.
00~11 = 2²-1

부동소수점 메모리 크기와 값의 범위

  1. 4byte 소수점을 빼고 숫자의 자릿수를 셋을 때 7자리까지 거의 정확하게 저장됨 == 유효자릿수
  2. 8byte 소수점을 빼고 숫자의 자릿수를 셋을 때 15자리까지 거의 정확하게 저장됨
    • 유효자릿수를 초과하면 값이 짤려서 들어갈 가능성이 높다.
    • 정확하게 말할 수 없다. ⇒ 2진수로 변환하는 과정에서 유효하지 않은 자리 수라도 정확하게 저장될 수있다.
    • 4→8 2배 더 큰 값(정밀한 값)을 저장

부동소수점 계산 시 주의

float f1 = 32.17541f;
float f2 = 23447.12f
float f3 = f1 + f2; ⇒ 23479.29541 ← 7자리를 초과해서 위험
→ 그래서 부동소수점은 기본으로 8byte 사용을 권장, 리터럴도 8byte일 때 접미사를 안 붙임

문자 저장

char c = ‘가’ ← 유니코드 값을 리턴 함;
‘가’ 문자 저장 ⇒ ‘가’ 문자의 유니코드 값을 저장하면 됨

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.