JAVA/자바 공부

데이터형과 문자열(4장)

sundori 2024. 6. 14. 20:43

목차

    데이터형이란

    우리가 밥을 먹을 때 국그릇, 밥그릇, 접시 등이 있듯이 프로그래밍에서도 변수마다의 접시가 다양하다.

    예를 들어 정수, 실수, 문자, 불형(Boolean), 문자열이 있다.

    public class Study {
        public static void main(String[] args) {
            int var1 = 100;
            double var2 = 3.14;
            char var3 = '자';
            boolean var4 = true;
            String var5 = "Hello!"
        }
    }

     

    데이터형의 종류

    정수 데이터형

    자바를 사용하 보면 정수형을 사용할 때는 그 정수형의 크기를 고려해야 한다. 예를 들어 사람들의 나이를 입력해야 한다면 0 ~ 120세로 설정하면 되고 회원가입을 받을 때 출생연도는 1900 ~2100년과 같이 설정하면 된다. 이렇게 정수형은 상황에 따라 값의 범위가 다른데 굳이 나누는 이유는 컴퓨터의 자원은 한정적이다. 이러한 한정적인 공간에서 자원의 효율적인 사용이 필수적이다.

    밑에 표를 먼저보자.

    정수형 크기 값의 범위
    byte 1바이트 -128 ~ 127
    short 2바이트 -32,768 ~ 32,767
    int 4바이트 -2,147,483,648 ~ 2,147,483,647
    long 8바이트 -9,223,372,036,854,775,808 ~
    9,223,372,036,854,775,807

    그러면 사람의 나이를 저장할 변수의 경우 0  ~ 120세를 기준으로 하면 byte형의 변수를 선언하면 되는 것이고 출생 연도의 경우 short를 사용하면 되는 것이다. 밑에 코드를 위에 코드를 보며 비교해 보자.

    public class Study {
        public static void main(String[] args) {
            byte age = 127; # 최대 저장 가능한 값의 크기가 127
            short birth = 32767; # 최대 저장 가능한 값의 크기가 32767
            int money = 2147483647; # 최대 저장 가능한 값의 크기가 2147483647
            System.out.println(age);
            System.out.println((byte)age + 1); # 최대 저장 가능한 숫자를 초과하였을 경우
            System.out.println(birth);
            System.out.println((short)birth + 1); # 최대 저장 가능한 숫자를 초과하였을 경우
            System.out.println(money);
            System.out.println((int)money + 1); # 최대 저장 가능한 숫자를 초과하였을 경우
        }
    }
    ------
    출력 결과
    127
    128
    32767
    32768
    2147483647
    -2147483648

    실수 데이터형

    실수형은 우리가 흔히 사용하는 3.14와 같은 소수점이 있는 숫자를 말하는데 자바에서는 소수점과 같은 실수형이 2개가 있으며 이 두 개 중

    기본으로 사용하는 형은 double이다. 따라서 3.14, 1.1111과 같이 어떤 실수를 입력하더라고 double형 값으로 인식하지만 float형으로 인식시키기 위해서는 float를 의미하는 'f'를 숫자 뒤에 붙인다.

    실수형 크기 값의 범위 유효 자릿수 (소수점 이하)
    flaot 4바이트 ±1.4E-45 ~ ±3.4028235E38 약 7자리
    double 8바이트 ±4.9E-324 ~
    ±1.7976931348623157E308
    약 15자리

    float와 double형 둘다 보기에 매우 큰 범위를 가지지만 이 둘을 구분하여 사용하는 경우는 수학과 같이 정밀한 계산이 필요할 때 구분해서 사용한다. 예를 들어 항공기, 우주선과 같이 말이다.

    public class Study {
        public static void main(String[] args) {
            float f = 0.1234567890123456789f;
            double d = 0.1234567890123456789;
            System.out.println(f);
            System.out.println(d);
        }
    }
    ------
    출력 결과
    0.12345679
    0.12345678901234568

    문자 데이터형

    하나의 글자를 저장할 수 있는 문자형은 작은 따옴표('')로 묶어서 대입한다.

    문자형 크기 값의 범위
    char 2바이트 영어 또는 한글
    public class Study {
        public static void main(String[] args) {
            char ch  = 65;
            char ch2 = 'A';
            char ch3 = 44032;
            char ch4 = '가';
            System.out.println(ch);
            System.out.println(ch2);
            System.out.println(ch3);
            System.out.println((int)ch4);
        }
    }
    ------
    A
    A
    가
    44032

    위의 코드를 보면 분명히 하나의 문자만 저장이 가능하다고 했는 숫자가 들어가 있다. 그 이유는 각 문자마다 고유의 번호가 있는데 대문자 A의 경우 정수로 65번이기 때문이다. 아스키 코드를 참조하자.

    https://namu.wiki/w/%EC%95%84%EC%8A%A4%ED%82%A4%20%EC%BD%94%EB%93%9C

     

    아스키 코드

    파일:attachment/1275273992_asciitable.gif 2열 이후의 코드들은 위키에서 사용할 수

    namu.wiki

    불 데이터형

    불형은 논리형이라고도 부루며 참 또는 거짓만 저장이 가능하다.

    불형 크기 값의 범위
    boolean 1바이트 true  또는 false
    public class Study {
        public static void main(String[] args) {
            boolean bool1, bool2;
            bool1 = true;
            System.out.println(bool1);
    
            bool2 = ( 100 < 10 );
            System.out.println(bool2);
        }
    }
    ------
    출력 결과
    true
    false

     

    문자열 클래스

    문자열 클래스 크기 값의 범위
    String (입력된 문자 수 X 2 )바이트 문자열의 길이에 제한은 없다.
    다만 JVM이나 힙 메모리 크기에 의존한다.
    public class Study {
        public static void main(String[] args) {
            String a = "Hello World!";
            System.out.println(a);
        }
    }
    --------
    출력 결과
    Hello World!

     

     

     

    'JAVA > 자바 공부' 카테고리의 다른 글

    연산자 (2장)  (0) 2024.06.12
    변수(1장)  (0) 2024.06.12