2018. 5. 30. 16:17 프로그래밍/이론

변수

변수 선언 : 값을 저장할 메모리를 준비시키는 명령.

변수 종류

  • 정수 : byte(1 byte), short(2 byte), int(4 byte), long(8 byte)

  • 부동소수점 : float(4 byte), double(8 byte)

  • 문자 : char(2 byte, unsigned), UTF-16 코드값 저-장

  • 논리값 : boolean, JVM에서는 4 byte를 사용, 메모리에 저장될 때 true는 1, false는 0으로 저장된다.

  • 문자열(주소) : String, 문자열이 저장된 주소를 저장. 포인터같은 개념으로 봐야하나?

메모리 종류

  • Primitive data type(원시 데이터 종류) : 자바에서 기본으로 정의하는 메모리 종류

  • Reference (레퍼런스) : 데이터가 저장된 메모리의 주소를 저장하는 메모리 종류.

= : 할당 연산자(연산을 수행하는 명령)

  • 우측에 지정된 값을 좌측에 있는 이름이 가리키는 메모리에 저장시키는 명령어

변수 할당 : 변수명 = [변수, 리터럴] ex) int a = 0;(Literal), int b = a;(Variable)

int a = b;에서 a는 l-value, b는 r-value라고 지칭한다.

변수 선언 후 초기화를 한 후 사용해야한다. 초기화 안한 상태에서 출력 혹은 사용하려하면 컴파일 오ㅗㅗㅗㅗ류


정수는 원래 4바이트인데 1바이트인 byte에 정수를 넣을 때 :

byte는 4바이트값을 저장할 수 없지만 1 byte가 저장할 수 있는 범위 내에서의 저장은 가능하다.

2바이트인 short에 넣을 때도 마찬가지로 2byte가 저장할 수 있는 범위 내에서의 저장이라면 가능하다.

  • 정수 연산은 기본적으로 int로만 진행되기때문에 byte, short는 연산을 할 수 없다. (연산결과값도 int).

  • 단, 위와 마찬가지로 데이터타입이 저장할 수 잇는 범위 내의 값인 경우 형변환을 써서 저장시킬 수 있다.

  • ex) short s3 = (short) 3*5; // 3*5는 int형인 15가 나오며 이를 short로 형변환.

!! 그 데이터타입이 저장할 수 있는 범위를 생각하고 진행해야한다.

우리가 써넣는 숫자는 4바이트를 기준으로 한다. 그 이상의 숫자를 하려면 숫자 뒤에 L을 붙여야한다.

단, 8바이트 표현으로는 2바이트 이하의 데이터타입이 저장가능한 범위라도 저장할 수 없다.

( 4바이트 정수 리터럴의 경우에만 byte, short에 저장할 수 있음.)


int 데이터타입에 들어있는 값이 byte나 short 데이터타입의 메모리에 저장할 수 있을 지라도 리터럴이 아닌 경우에는 큰 크기의 메모리값을 작은 크기의 메모리값에 저장할 수 없다.

ex) int i = 100; byte b = 100; b = i; // 리터럴이 아닌 변수기때문에 저장이 불가능

하지만 b = (byte) i; 처럼 형을 바꾸면 byte 데이터타입이 저장할 수 있는 크기까지는 저장이 가능해진다.

역으로 long에는 byte, short, int 모든 정수형 데이터를 넣을 수 있다.

  • int에는 long형식의 데이터를 넣을 수 없다. 하지만 마찬가지로 int로 캐스팅하면 int의 저장 범위 내에서 저장이 가능해진다.


'프로그래밍 > 이론' 카테고리의 다른 글

2진수와 표기법  (0) 2018.05.30
컴파일러와 바이트코드  (0) 2018.05.30
문자 2진화와 한글처리 특징  (0) 2018.05.30
Posted by kingroad

블로그 이미지
개발자를 꿈꾸는 코린이 입니다
kingroad

태그목록

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.5
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

최근에 올라온 글

최근에 달린 댓글

글 보관함