JAVA/변수

04. 기본 타입

햄스타69 2021. 8. 10. 20:58

목차

    - 자료형은 왜 필요한가

    1) 메모리는 상대적으로 비싼데 1비트 하나의 데이터를 저장하려고 32bit int 형으로 선언하면 낭비이다.

    pc, 냉장고 정수기등 요새는 인공지능을 사용하는데 이런 가전 제품은 단가 싸움이라 최소한의 용량으로 단가를 맞춰서 최적화하여 기기에 넣어 사용한다. 메모리의 효율성을 생각해서 자료형을 잘 활용해야한다.

    2) 문자열을 쓰던 상수를 사용하던 컴퓨터는 숫자로 인식하여 저장한다. char, int모두 숫자로 저장하지만 해석하는 방식이 다르기 때문에 자료형을 사용한다고 할 수 있다. 자료형은 값을 해석하는 방식을 고른다고 접근해야함

    (가끔 뜬금없이 예상한 값이 아닌 음수값이 찍힐때 출력될때에는 오버플로우를 의심해 야한다)

     

    메모리에 담긴 값을 해석하는 방법 => 자료형

     

    - 자료형의 종류

    1) 기본타입 (int, byte, char 등)

    2) 참조타입 (String, 배열, Class등)

    ※나중에 Class에대해 배울텐데 Class도 하나의 자료형이라고 생각하고 이해하면 좋을 것이다.

     

    -기본타입 자료형

    정수(byte, char, short, int, long), 실수(float,double), 논리값(boolean)을 저장할 수 있는 기본타입이 있다.

     

      1byte 2byte 4byte 8byte
    논리형 boolean      
      true 또는 false      
    문자형   char    
        '\u0000' ~ 'uFFFF'
    0~65535(유니코드)
       
    정수형 byte short int long
      -128 ~ 127 -32,768 ~ 32,767 -2,147,483,648 ~
    2,147,483,647
    -9,223,372,036,854,775,808 ~
    9,223,372,036,854,775,807
    실수형     float double
         
    정밀도(소수점 이하)     7자리 15자리

    1byte = 8bit

     

    1) 정수형

    JVM 의 피연산자 스택이 피연산자를 4 Byte 단위로 저장 하기 때문에

    int 보다 작은 자료형의 값을 계산시 int 형으로 형변환 되서 연산이 수행됨

     

    -왜 char 은 2byte인가?

    char타입은 음수 값을 가질 수 없으며 작은따옴표(')로 감싸서 사용하며 이를 문자 리터럴이라고 합니다.

    유니코드로 변환되어 저장되며, 유니코드는 세계 각국의 문자를 2byte로 표현할 수 있는 숫자 (0~65535)로 매핑한 국제 표준 규약입니다. 

     

    - char에 값을 저장하는 방식에대한 예제이다 .

    public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		char c1 = 'A';
    		char c2 = 65 ;
    		char c3 = '\u0041';
    		
    		System.out.println(c1);
    		System.out.println(c2);
    		System.out.println(c3);
    	}

    실행결과

    2) 실수형

    - float타입

    float타입으로 저장하고 싶다면 리터럴 뒤에 소문자 f나 대문자 F를 붙여 컴파일러가 float 타입임을 알 수 있도록 해야함

    double타입은 float타입보다 2배정도 정밀도가 높기 때문에 좀 더 정확한 데이터 저장이 가능함

    ※ 메모리에 여유가 있고 특별한 이유가 없는 한 실수 리터럴을 저장할 때에는 double타입을 사용하는 것이 좋음

    - String 타입

    큰 따음표(")로 감싼 문자로 이를 문자열이라고 부르며 유니코드로 변환되지 않는다.

    작은따옴표와 큰따옴표는 컴파일러가 문자 리터럴과 문자열 리터럴을 구별하는 기호로 사용된다.

    String 은 기본타입이 아닌 참조타입이므로 나중에 다시 설명하겠다.

     

    - 이스케이프(escape)문자

    문자열 내부에 특정 문자를 포함시키고 싶을때 사용함

    ex) 큰따옴표는 문자열 식별 기호인데, 데이터로써 큰 따옴표를 사용하고 싶을때 

     

    이스케이프 문자 출력 용도
    \t 탭만큼 띄움
    \n 줄 바꿈(라인 피드)
    \r 캐리지리턴(커서를 맨앞으로 돌려놓는다)
    \" "출력
    \' '출력
    \\ \출력
    \u16진수 16진수 유니코드에 해당하는 문자 출력

     

    'JAVA > 변수' 카테고리의 다른 글

    07. 연산자  (0) 2021.08.18
    06. 변수와 시스템 입출력  (0) 2021.08.13
    05. 변수의 타입 변환  (0) 2021.08.12
    03. 변수  (0) 2021.08.10