Java: 변수 & 자료형(2)

Java의 기본 자료형

변수를 선언할 때 '자료형'을 결졍해야 한다.

실수 자료형: float, double

소수점 이하의 값을 지닌 실수의 저장 및 표현은 메모리에 할당되는 크기에 따라 float과 double로 나뉜다.

  • 정밀도를 포기하고 표현의 범위를 넓인 자료형이다.
  • float과 double의 선택 기준은, 값의 표현 범위에 존재하지 않는다.(무수히 많은 값이 있기 때문에)
  • double: 8byte / float: 4byte / float으로도 충분히 넓은 표현 범위를 갖는다.

그렇다면 float과 double의 선택기준은?
정밀도를 어떻게 할 것인지에 따라 정한다. 표현에 사용되는 바이트 수가 크면 오차는 줄어든다.


문자 자료형: char

하드웨어는 숫자(2진수)를 인식하고 표현하는 장치이다.

소프트웨어상에서 어떻게 문자를 표현하는 것일까?
문자 하나하나에 숫자를 부여하는 방법을 사용한다.

예를 들어,
문자 A는 숫자 65로 표시하기로 약속

이러한 '문자의 표현에 대한 약속'을 가르켜 문자 셋(Character Set)이라 한다.
여기서 더 나아가 모든 나라의 문자를 수용하여 전 세계적으로 사용할 수 있도록 설계한 문자 셋을 유니코드(Unicode)라 한다.

유니코드는 문자 하나를 2바이트로 표현하는 체계를 가진다.

🔎 **8bit = 1byte

  • Java의 char는 문자의 저장을 위한 자료형이다.

  • 그리고 Java는 유니코드를 기반으로 문자를 처리한다.

  • char형 변수 하나에, 한글 문자 1개를 저장할 수 있다.

  • 문자는 반드시 작은 따옴표('')로 감싸서 표현해야 한다.

아래와 같이 선언하면 char형 변수 ch1과 ch2에각 문자의 유니코드 값이 저장된다.

// 예) 
char ch1 = '헐'; // '헐'의 유니코드: 54736
char ch2 = '확'; // '확'의 유니코드: 54869

그렇다면 아래처럼 선언한다면?

char ch1 = 54736;
char ch2 = 54869;

ch1과 ch2를 출력했을 때 '헐'과 '확'이 표시된다.

54736처럼 10진수 숫자로 선언할 수도 있고, 10진수를 16진수로 변환하고 가장 앞에 0x를 붙여서 유니코드 값을 16진수로 표현해도 마찬가지다.

Java가 유니코드를 지원한다 하더라도, 문자의 출력은 운영체제에 의존적이다.
따라서 출력하고자 하는 언어의 폰트가 운영체제에 설치되어 있어야 한다.

논리 자료형: boolean

'참' 또는 '거짓'의 표현을 목적으로 한다.
프로그램에서 '참'과 '거짓'의 상황 또는 상태를 표현해야 하는 상황이 자주 등장하기 때문이다.

true // 소문자 / '참'
false // 소문자 / '거짓'

다른 기본 자료형들과 마찬가지로, 변수로 선언하면서 초기화 하는 것도 가능하다.

boolean isBlue = true; // boolean 자료형 'isBlue'라는 이름의 변수에 true를 저장하면서 초기화
boolean isRed = false; // boolean 자료형 'isBlue'라는 이름의 변수에 false를 저장하면서 초기화

명제의 참과 거짓을 판별하는 데도 사용된다.

class Boolean{
    public static void main(String[] args){
        boolean b1 = true;
        boolean b2 = false;
        System.out.println(b1);
        System.out.println(b2);
        
        int num1 = 10;
        int num2 = 20;
        System.out.println(num1 > num2);
        System.out.println(num1 < num2);
        }
}

>> true    // 변수에 저장된 값을 그대로 출력
>> false   // 변수에 저장된 값을 그대로 출력
>> false   // 10 > 20은 거짓이므로 Systme.out.println(false)가 된다 
>> true    // 10 < 20은 참이므로 Systme.out.println(true)가 된다

좋은 웹페이지 즐겨찾기