'기본 자료형'에 해당되는 글 1건

  1. 2007.07.10 기본 자료형

byte : 1byte (-128~127)
short : 2byte (-32768~32767)
char : 2byte (0~65535)
int : 4byte (-2147483648~2147483647)
long : 8byte (-922경~922경)

1/ class DataStyle{
2/   public static void main(String[] args) {
3/     byte a = 127;
4/     a++;

5/     short b = -32768;
6/     int c = 2147483647;
7/     long d = 123098148390127389L;  // L을 붙여서, int형과 구분해준다.

8/     char e = 65;
9/     char f = 'a';
10/   char g = '\u0041'; // 16진수표현, '\'사용
11/   float h = 12.34f;      // f를 붙이지 않으면, double 형으로 판단
12/   double i = 12.34;
  }
}
자료형은 담을 수 있는 공간은 정해져 있다. 3번째 라인과, 4번째 라인에서 byte 는 -128~127 까지의 영역을 저장할수 있는데, 만약 이 공간의 크기가 넘어가면, 컴파일 에러가 나오며, 실행이 에러가 된다.

하지만, 4번째 라인처럼 연산자를 사용하여, 공간의 크기를 넘어갔을 경우, 자료형태의 안에서 결국 돌고 돌아, byte 범위내의 첫 숫자인 -128이 a에 저장이 되어 출력된다.

byte 는 총 8비트로 구성이 되어 있으며, 이를 2진수로 표현하면 이렇게 된다.

1/ 0000 0000 : 0
2/ 0000 0001 : 1
3/ 0000 0010 : 2
4/ ....
5/ 0111 1111 : 127
6/ 1000 0000 : 128
7/ 1000 0001 : 129
8/ ....
9/ 1111 1111 : 255

하지만, 이런 식으로 표현할 경우, 문제가 발생한다. 바로 음수를 표현할 방법이 사라지게 된다. 그래서 고안한 방법이, 최상위 비트를 부호 비트로 놔두는 방법이다. 고로, 최상위 비트가 0이면 양수, 1이면 음수로 표현함으로써, 음수를 표현하는 방법을 생각해 낸 것이다.

이를 다시 2진수로 표현하면 이렇게 된다.

1/ 0000 0000 : 0
2/ 0000 0001 : 1
3/ 0000 0010 : 2
4/ ....
5/ 0111 1111 : 127
6/ 1000 0000 : -128
7/ 1000 0001 : -127
8/ ....
9/ 1111 1111 : -1

6 번째 라인 이후부터는, 음수가 되어가는 것을 볼수가 있는데, 6번째 라인에서, 1000 0001 은 최상위 비트가 1이므로 음수를 나타내서 -128인 상태에서 최하위 비트가 1이므로, -128+1 이 되어, -127이 되어버렸다. 이런 식으로 하면, 마지막 9번째 라인에서는 -128+127이 되어 -1이 되게 된다.

이렇게 보면, 결국 자료형은 돌고 돈다는 이야기인데, 다시 코딩 부분으로 돌아가, 3번째 라인에서 127을 입력시키고, 4번째 라인에서 1을 증가시켰다. 위의 byte 의 새로운 2진수 표현 방법을 적용시키면, 127 에서 1을 더하면, 128이 아닌, 음수인 -128이 된다. 그래서 나중에 a 를 출력하면, -128이 출력된다.

코딩 부분에서 7번째 라인을 보면 long 형태의 자료형을 사용한 것을 볼수가 있는데, 만약 long 형태의 자료형을 선언하고, 큰 범위의 숫자를 입력하면, 컴퓨터는 이를 그냥 int 형으로 인식하여 컴파일 에러를 발생시킨다. 이를 위해 long 형을 사용시엔, 항상 입력한 값뒤에 대문자 L 자를 삽입하며, 소문자 l 을 사용해도 가능하나, 숫자 1과 소문자 l을 구별하기 위해, 대문자 L을 좀더 사용한다.

8번째 라인부터 10번째 라인까지는 문자형 char 에 관한 부분으로 단순히 숫자를 입력하면, 아스키 코드값 저장하여 출력시, 저장된 아스키 코드값의 해당 글자가 출력된다. 작은 따옴표를 이용한 문자를 저장할 경우엔, 오직 한문자만이 저장 가능하며, 이 역시 저장된 글자가 바로 출력이 된다. 하지만, 실제, 컴퓨터는 아스키 코드값으로 기억, 저장하고 있다.

11번째 라인과 12번째 라인은 실수형을 담고 있는데, float 자료형을 사용시, 저장 값에 f를 사용안하면, double 자료형으로 인식, 에러를 일으키게 된다.


p.s 위의 글들은, 김승현 강사님열혈강의 Java Programming 의 Round 3-4, 동영상 강좌에 기초한 내용입다다.
:

BLOG main image
아무거나 공부하자!!! by Young79

공지사항

카테고리

분류 전체보기 (79)
Programing (29)
English (31)
Graphic (4)
Saying on T"We"tter (15)

최근에 올라온 글

최근에 달린 댓글

글 보관함

달력

«   2024/05   »
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
Total :
Today : Yesterday :