JAVA/JAVA

Java | Data Type 자료형

pathas 2020. 1. 15. 22:32

Data Type 자료형

컴퓨터에게 어떤 데이터를 얼마만큼의 크기로 저장할 것인가를 지정해주는 것

문자열, 숫자, 논리적인 값 8가지가 있음

↔ JavaScript 에서는 변수 선언시 자료형을 지정하지 않음(TypeScript에서는 함)


정수 자료형

종류 설명
 byte 저장공간 크기 1byte, (-127 ~ +128)만 저장 가능
자바의 기본 데이터 전송 단위, ex) 채팅 프로그램 데이터 전송
 short 저장공간 크기 2byte, (-32768 ~ +32767) 저장 가능
 int 저장공간 크기 4byte, (-2147483648 ~ +2147483647) 저장 가능
자바의 기본 연산 단위(+, -, * , / 산술연산)
형변환과 연관
 long 저장공간 크기 8byte,
데이터를 long형으로 저장하기 위해서는 저장하는 값 뒤에 L or l을 써줘야 함

사용례

public class VarTest {
    public static void main(String[] args) {        
        byte b = 23;
        //변수 b를 선언하면서 23값을 저장

        short c = 12;
        //byte로도 저장할 수 있는 숫자를 short로 저장하면 메모리 낭비 발생

         int sum = b + c;
        /* b + c = 35이므로 byte에도 충분히 담길 수 있지만,
        b + c 에서 산술연산자가 사용되고 있고
        java의 기본 연산 단위는 int이기 때문에
        int 자료형을 사용해야 함 */

         long num = 1234567890000L;
         /* int 저장 범위를 넘어서는 수이기 때문에 long형으로 저장해야함
            long형으로 저장하기 위해서 숫자 마지막에 L을 작성 */
    }
}

 

※ 산술연산자를 사용할 때에는 꼭 int 자료형 사용 !!

 

※ 예제에서는 변수의 사용을 생략했는데, 변수를 선언만 하고 사용하지 않으면
이클립스에서 사용되지 않는 변수라는 알림을 표시해줌

 

※ Type mismatch ERROR
변수의 자료형과 맞지 않는 값을 저장했을 때 발생하는 에러


실수 자료형

종류 설명
 float 저장공간 크기 4byte
실수를 float형에 저장하기 위해서는 숫자 마지막에 F or f를 작성해야 함
소수점 일곱 번째 자리까지 저장 가능
float f = 5.3 X, float f = 5.3F O
 double 저장공간 크기 8byte
자바의 기본 실수 저장 자료형, double d = 5.3 O

※ 정수자료형 / 실수자료형 데이터 저장 공간 크기 비교
byte 1 < short 2 < int 4 < long 8 < float 4 < double 8
float, double은 소수점 이하의 수를 가지기 때문에 long보다 float의 저장 공간이 더 큼

 

※ 5.3이 float에 저장되지 못하는 이유
자바에서 실수는 기본적으로 double형으로 저장되는데
double이 float보다 큰 값을 다루기 때문에 float에 5.3을 바로 저장할 수 없음
→ float f = 5.3F 로 작성해야 함

사용례

public class VarTest2 {
    public static void main(String[] args) {
        // 실수값 저장
        float f = 5.3F;
        double f2 = 5.3;
        System.out.println("f값: "+f+", f2값: "+f2);
        // f값: 5.3, f2값: 5.3

        // float, double 차이점
        float m_float = 123456.789123F;
        double m_double = 123456.789123;
        System.out.println("m_float 값: "+m_float+", m_double 값: "+m_double);
        // m_float 값: 123456.79, m_double 값: 123456.789123
    }
}

※ float 자료형에는 소수점 두 번째 자리까지만 저장 가능


BOOLEAN 논리형

true / false 값을 저장할 수 있는 자료형

저장공간 크기 1byte

public class VarTest3 {
    public static void main(String[] args) {
        boolean b = true; // 소문자만 입력
        boolean c = 2>3; // 관계연산자로 true/false값 저장 가능

        System.out.println("b값: "+b+", c값: "+c);
        // b값: true, c값: false
    }
}

문자 자료형

종류 설명
char 저장공간 크기 2byte
character의 준말, '문자 하나' 저장
' '(작은 따옴표) 사용
String 여러 개의 문자로 이루어진 '문자열' 저장
" "(큰 따옴표) 사용
String은 자바의 기본자료형이 아님, 참조형(reference) 또는 클래스형이라고 함
→ 기본 자료형 8가지에 포함되지 않음

↔ JavaScript는 ' ', " " 구분 X

ASCII 코드

(American Standard Code for Information Interchange, 미국 정보 교환 표준 부호)

컴퓨터는 문자를 인식할 수 없기 때문에 문자를 숫자로 변환하기 위해 만들어진 코드

  • 0 ~ 255로 알파벳, 특수문자 등 가장 기본적인 문자 표현 가능
  • A => 65, B => 66 ,,,
  • a => 97, b => 98 ,,,
  • 16진수 '\u0000'~'\uFFFF' 표기 가능
    ex) 10진수 : 45 → 8진수 : 045, 16진수 0x45

※ 문자 인코딩(Encoding) : 문자를 정해진 코드 값으로 변환하는 것
문자 디코딩(Decoding) : 코드 값을 문자로 변환하는 것

UNICODE 유니코드

전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준
유니코드 협회(Unicode Consortium)가 제정

  • 비영어권 사람들이 자기 나라 언어로 개발 가능하도록 설계된 코드
  • 한글 및 다른 언어를 사용할 수 있음
  • 0 ~ 65535 로 여러가지 언어 표현 가능

문자열 결합 +

문자열과 문자열을 연결할 때 +연산자를 사용하면 두 문자열을 합칠 수 있음
ex) "ab" + "cd" = "abcd"

사용례

public class VarTest3 {
    public static void main(String[] args) {
        char d = 'A';
        char d2 = 65; 
        // 아스키값으로도 문자 표현 가능, char 자료형에 담긴 숫자는 문자의 코드 값을 뜻함

        char d3 = '\u0041';
        /* 16진수 값을 입력 받아서 문자 저장, '\u0000'~'\uFFFF'로 표기
         10진수 : 45, 8진수 : 045, 16진수 0x45 */
        System.out.println("d값: "+d+", d2값: "+d2+", d3값: "+d3);
        // d값: A, d2값: A, d3값: A

         String s1 = "식별자 자바기초 문법";
        String s2 = "변수, 자료형, 연산자";
        String s3 = s1 + "" + s2;
        System.out.println("s3: "+s3);
        // s3: 식별자 자바기초 문법 변수, 자료형, 연산자
    }
}

Java에서 변수를 저장할 때는 변수에 담기는 데이터의 자료형을 꼭 지정해주어야 합니다.

10버전부터는 자료형을 구분하지 않는 var도 지원한다고 하지만
자료형을 정확히 지정해주어야 저장공간이 낭비되지 않고

여러 사람과 코드를 공유할 때 변수의 가독성을 높일 수 있습니다.