본문 바로가기
카테고리 없음

2-4 자료형의 이해

by CGS 2018. 8. 20.

앞서 byte, short, int, long 등의 자료형에 대해 알게 되었습니다.


int형은 4바이트의 공간을 갖고, short는 2바이트, long은 8바이트의 공간을 갖는다고 했습니다.


저는 프로그래밍에 대해서 배울때, "모든걸 큰 자료형으로 선언하면 귀찮은것도 없고 편하지 않나? 왜 굳이 int를 쓰고 하지?" 했었습니다. 지금도 하고있지만요.


옛날에는 아주 작고, 한정적인 메모리 공간만을 가지고 프로그램을 만들어야 했으니 자료형의 선택이 매우 중요했지만


지금은 거의 8GB 이상의 메모리가 기본이 되다시피 컴퓨터를 사용하고 있습니다.


메모리 공간만을 생각해보면 그렇지만, 우리가 일반적으로 사용하는 CPU는  int형 연산을 가장 빠르게 처리할 수 있게 설계 되어있습니다.


그렇기 때문에 보통 int로 선언해서 프로그래밍 하는 것이 일반적인 선택이라고 말할수있습니다.


그러면, "short와 byte 등의 자료형은 필요 없는게 아닌가?" 하는 의문이 들 수도 있습니다.


프로그래밍을 하다보면 연산이 중요한 작업이 있고, 데이터의 표현이 중요한 작업이 있습니다. 게임을 예로 들면 움직임, 상태 등의 숫자 정보들 같은 경우는 수백, 수천개 이상의 정보를 저장해야하기 때문에 연산 보다는 자료형이 중요해지게 됩니다.


실수 표현에 e에 대한 표기 16진수, 8진수에 대한 개념도 있었는데요


예제를 하나 작성해보겠습니다.



public class Enotaion {


public static void main(String[] args) {

// TODO Auto-generated method stub


double e1=1.2e-3;

double e2=1.23+3;

int num1=0xA0E;

int num2=0752;

System.out.println(e1);

System.out.println(e2);

System.out.println(num1);

System.out.println(num2);

}


}


이렇게 작성해서 빌드를 해보면

0.0012
4.23
2574
490


이런식으로 결과가 나올겁니다.

e에 대한 표기방법과

16진수, 8진수 표현에 대한 결과입니다.

0x로 시작하면 16진수, 0으로 시작하면 8진수로 표현하게 되는 것을 볼 수 있습니다.

문자형 데이터의 출력은 유니코드를 기반으로 합니다. 자세하게 다루진 않을 것이고, 혹 유니코드와 그에 따른 표현방법 등에 대한 자세한 정보는 이미 책이나 인터넷에 많이 나와있으니 그쪽을 참고하시고 문자 표현에 대한 예제 코드만 보겠습니다.



public class UnicodeChar {

public static void main(String[] args) {
// TODO Auto-generated method stub
char ch1 = 'A';
char ch2='한';
char ch3 = 0x3091;
char ch4 = 0x3092;
System.out.println(ch1);
System.out.println(ch2);
System.out.println(ch3);
System.out.println(ch4);
}

}

결과는


A


이렇게 나올겁니다.

문자는 작은 따옴표로 표현이 되고, char형 변수는 문자의 저장을 위해 사용된다, char형 변수에 실제 저장되는 것은 유니코드 상수 값이다, System.out.println은 문자를 적절하게 출력한다

정도 짚고 넘어가시면 됩니다.


참 거짓을 판별하는 boolean 에 대해서 보겠습니다.


프로그래밍을 하다보면 참/거짓이 어디에 어떻게 쓰이기나 하는지 의문이 드는 사람들도 많을 것입니다. 의외로 알게모르게 참/거짓을 이용해서 하는 방법은 정말 많이 쓰입니다 현업에서.  


public class Boolean {


public static void main(String[] args) {

// TODO Auto-generated method stub

boolean b1=true;

boolean b2=false;

System.out.println(b1);

System.out.println(b2);

System.out.println(3<4);

System.out.println(3>4);

}


}


결과는

true

false

true

false


참이냐 거짓이냐에 따라서 반복문을 더 사용하기도 하고, 연산을 덜하고 더하고 하는 등 굉장히 많은 곳에서 쓰이는 논리형 자료형입니다.


자료형에 대해서는 이정도로 알고 넘어가도록 하겠습니다.