ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL #8-2][JAVA] 데이터타입
    CodeStates_Backend/TIL (Today I Learned) 2022. 5. 8. 14:01

    코드스테이츠 백엔드 부트캠프 39기 10일차

     

    JAVA 타입 - 기본타입 / 참조타입

     

     

    기본타입 (primitive type)

    데이터의 실제 값을 의미한다.

     

    🔘 정수 타입

    메모리의 용량을 아끼기 위해 4가지로 나누었지만, 요즘은 거의 int형을 많이 쓴다.
    각 타입별 메모리 크기와 범위는 다음과 같다.

    * 1 Byte = 8 Bits

    정수타입 메모리크기, 범위
    나만의 [정수타입 범위계산] 룰ㅎ

    정수 리터럴을 선언할 때, int형을 넘어가는 값일 때는 가장 뒤에 L을 붙여줘야 한다. 물론 L을 붙여줘도 long타입 벗어나는 값이면 오류가 발생한다.

     

    🔘 실수 타입

    • float : 4Bytes
    • double : 8Bytes

    float타입의 경우 리터럴 뒤에 f , double타입의 경우 리터럴 뒤에 d 를 붙여준다. 단, double타입이 실수형의 디폴트값이므로 d 를 붙이는 것을 생략할 수 있다.

     

    실수 타입은 부동소수점 표현을 사용하는데, 이는 오차가 발생할 수 있음을 알아두자. 표현 범위가 클수록 오차가 줄어들고 이를 정밀도가 높다고 한다. 따라서 double타입이 float타입보다 정밀도가 높다.

     

    🔘 문자 타입

    • char : 2Bytes

    단 하나의 문자만 저장한다. 여러개의 문자를 저장하는 String 클래스와는 다르다. 실제로는 String클래스 내부에서 결국 char를 이어붙여 사용한다고는 한다. 

     

    자바는 유니코드에 기반하여 문자를 표현한다. 문자를 변수에 대입하면 그 문자에 해당하는 정수 값(유니코드 값)이 저장되는 것이다.

     

    🔘 논리 타입

    • boolean : 1Byte

    단순히 참, 거짓을 표현하므로 1bit로 가능하지만, JVM의 최소 데이터 단위가 1Byte이므로 1Byte가 됨. True 혹은 False의 값이 가능하다.

     

    참조타입 (reference type)

    데이터가 저장된 주소값을 의미하며 객체의 주소를 저장한다.

    • 기본타입을 제외한 나머지 모든 타입이 참조타입이다.
    • 예시
    public class Main {
        public static void main(String[] args) {
            Object object = new Object();
            System.out.println(object);
        }
    }
    //출력 결과 : java.lang.Object@35bbe5e8

             출력 결과에서 @35bbe5e8 이 객체의 주소값이다.

     

     

    📌 [참고] 자바는 객체 지향 언어이므로 클래스를 마치 타입과 같이 사용한다.  해당 클래스의 객체를 생성하여 사용하니까.

    잠시 생각해보면 아주 당연한 말이다. String 클래스가 좋은 예가 된다.

     

     

    📌 언어별 데이터타입 정리

    더보기

    C언어 , C++

    종류 데이터 타입 크기 기억 범위
    문자 char 1Byte -128 ~ 127
    부호없는 문자형 unsigned char 1Byte 0 ~ 225
    정수 short 2Byte -32768 ~ 32767
    int 4Byte -2147483648 ~ 2147438647
    long 4Byte -2147483648 ~ 2147438647
    long long 8Byte -9223372036854775808
    ~ 9223372036854775807
    부호없는 정수형 unsigned short 2Byte 0 ~ 65535
    unsigned int 4Byte 0 ~ 4294967295
    unsigned long 4Byte 0 ~ 4294967295
    실수 float 4Byte 1.2 X (10의 -38제곱)
    ~ 3.4 X (10의 38제곱)
    double 8Byte 2.2 X (10의 -308제곱) 
    ~ 1.8 X (10의 308제곱) 
    long double 8Byte 2.2 X (10의 -308제곱) 
    ~ 1.8 X (10의 308제곱) 

     

    Java

    종류 데이터 타입 크기 기억 범위
    문자 char 2Byte 0 ~ 65535
    정수 byte 1Byte -128 ~ 127
    short 2Byte -32768 ~ 32767
    int 4Byte -2147483648 
    ~ 2147483647
    long 8Byte -9223372036854775808
    ~ 9223372036854775807
    실수 float 4Byte 1.4 X (10의-45제곱)
    ~ 3.4 X (10의 38제곱)
    double 8Byte 4.9 X (10의 -324제곱)
    ~ 1.8 X (10의 308제곱)
    논리 boolean 1Byte true / flase

     

    Python

    종류 데이터 타입 크기 기억 범위
    문자 str 무제한 무제한
    정수 int 무제한 무제한
    실수 float 8Byte 4.9 X (10의 -324제곱)
    ~ 1.8 X (10의 308제곱)
    complex 16Byte 4.9 X (10의 -324제곱)
    ~ 1.8 X (10의 308제곱)

     

    **complex

    원래 영어에서 '복소수'를 'complex number'라고 하며,

     complex는 복소수를 의미하는 "실수" + "허수"를 의미한다.

     

    * 출처 https://naminal.tistory.com/130

     

     

Designed by Tistory.