ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 자바의 데이터 타입 (논리형, 문자형, 정수형, ...)
    Java 2023. 7. 13. 10:15
    728x90
    반응형

     

    자바의 자료형을 알아보자

    🍊 논리형 Boolean

    논리형(boolean)은 프로그래밍에서 참(True) 또는 거짓(False) 값을 나타내는 데이터 타입입니다. 논리형 변수는 주어진 조건에 따라 프로그램의 흐름을 제어하고, 논리적인 판단과 결정을 할 때 사용됩니다.

     

    표현 범위
    : true false

     

    예제 코드

    public class BooleanExample {
        public static void main(String[] args) {
            boolean isRaining = true;
            boolean isSunny = false;
    
            // 비가 오는지 확인
            if (isRaining) {
                System.out.println("비가 옵니다. 우산을 가져가세요!");
            } else {
                System.out.println("비가 오지 않습니다. 우산은 필요 없어요!");
            }
    
            // 날씨가 맑은지 확인
            if (isSunny) {
                System.out.println("날씨가 맑습니다. 즐거운 하루 되세요!");
            } else {
                System.out.println("날씨가 흐립니다. 야외 활동에 주의하세요!");
            }
    
            // 논리 연산자 사용
            boolean isWarm = true;
    
            // 비가 오지 않고, 날씨가 따뜻한지 확인
            if (!isRaining && isWarm) {
                System.out.println("비가 오지 않고, 따뜻한 날씨입니다.");
            } else {
                System.out.println("날씨 조건이 충족되지 않습니다.");
            }
        }
    }

     

     


    🍊 문자형 char

    문자형(char)은 프로그래밍에서 단일 문자를 나타내는 데이터 타입입니다. 문자형 변수는 작은따옴표('')로 감싸진 단일 문자를 저장하고 조작하는 데 사용됩니다.

     

    Java에서 문자형은 16비트 유니코드(Unicode) 문자를 나타내며, 문자열과는 구분됩니다. 문자열은 여러 개의 문자로 이루어진 문자의 시퀀스를 나타내는 반면, 문자형은 하나의 문자만을 나타냅니다.

     

    표현 범위
    : 2byte, 0~65535

     

    예제 코드

    public class CharExample {
        public static void main(String[] args) {
            char grade = 'A';
            char dollarSign = '$';
            char digit = '9';
    
            System.out.println("학점: " + grade); // 학점: A
            System.out.println("화폐 기호: " + dollarSign); // 화폐 기호: $
            System.out.println("숫자: " + digit); // 숫자: 9
        }
    }

     

    또 자바에서는 문자형을 아래처럼도 쓸 수 있습니다.

    char ch = 'A';
    ch = 65; // A
    ch = '\u0041'; // A

    문자형은 위와 같이 여러 가지 방법으로 표현이 가능합니다.

     

    🙋‍♀️ 맨 마지막에 저건 뭐죠?

    가장 아래의 \u0041 은 유니코드라는 것입니다.

    유니코드에 대해서 간단히 알아볼게요

     

    🥑 유니코드 확장(Unicode Escape)

    • 유니코드 확장은 \u 다음 4자리의 16진수를 사용해 문자를 나타내는 표기 방법입니다.
    • ASCII 코드에 포함된 문자의 경우는 2자리 16진수 코드 앞에 \u00을 붙이면 유니코드 확장이 됩니다.
    \u0041    알파벳 'A'
    \u0041    알파벳 'B'

     

     


    🍊 byte

    정수형 데이터 타입 중 하나인 **byte**는 8비트(1바이트)로 표현되는 부호 있는 정수를 나타냅니다. byte 데이터 타입은 -128부터 127까지의 값을 표현할 수 있습니다.

     

    byte 데이터 타입은 메모리를 절약해야 하는 경우에 유용하게 사용될 수 있습니다. 예를 들어, 파일이나 네트워크에서 작은 크기의 데이터를 전송하거나 저장할 때 byte 타입을 사용하여 공간을 절약할 수 있습니다. 또한, 특정 하드웨어와의 상호작용이 필요한 경우에도 byte 타입이 사용될 수 있습니다.

    표현 범위
    1byte(16bit), -128~127

     

    예제 코드

    public class ByteExample {
        public static void main(String[] args) {
            byte temperature = -10;
            byte age = 25;
    
            System.out.println("온도: " + temperature); // 온도: -10
            System.out.println("나이: " + age); // 나이: 25
        }
    }

     

    byte b1 = 0x10; // 0x는 16진수 표기법이다.
    b1 = 010; // 0는 8진수 표기법이다.
    b1 = 0b10; // 0b는 2진수 표기법이다.

     

    Mini Quiz.

    💁🏻‍♀️ 아래 코드는 오류가 날까요? 안 날까요?

    byte b2 = 3, b3 = 4;
    
    // 이 코드
    byte b4 = b2 + b3;

     

    정답은

    더보기

    정답은 오류가 난다 입니다.

     

    이유는 자바의 연산자는 기본 단위가 int이기 때문입니다. int(4byte)형은 byte(1byte)형보다 크기 때문에 묵시적 형변환이 이루어지지 않아 오류가 나게 됩니다.

    byte b4 = (byte)(b2 + b3); //이렇게 하면 오류 안남

    대신 위처럼 명시적 형변환을 시켜주면 오류없이 잘 실행되게 됩니다.

     

     

    🙋‍♀️ 묵시적 형변환? 명시적 형변환? 그게 뭐죠?

     

    📌 묵시적 형변환 (Implicit Casting):

    • 묵시적 형변환이란 작은 범위의 자료형을 큰 범위의 자료형으로 자동으로 변환하는 것입니다.
    • 작은 범위의 자료형이 큰 범위의 자료형에 저장될 때 발생하며, 자료의 손실이 없는 경우에만 수행됩니다.
    • 예를 들어, 정수를 실수로 변환하거나, 작은 자료형인 byte를 큰 자료형인 int로 변환하는 경우 묵시적 형변환이 일어납니다.
    int num1 = 100;
    double num2 = num1; // int가 double로 묵시적 형변환 됨
    System.out.println(num2); // 출력: 100.0

     

    📌 명시적 형변환 (Explicit Casting):

    • 명시적 형변환은 큰 범위의 자료형을 작은 범위의 자료형으로 강제로 변환하는 것입니다.
    • 데이터의 손실이 발생할 수 있으므로 명시적으로 변환할 자료형을 명시해야 합니다.
    • 예를 들어, 실수를 정수로 변환하거나, 큰 자료형인 long을 작은 자료형인 byte로 변환하는 경우 명시적 형변환이 필요합니다.
    double num1 = 3.14;
    int num2 = (int) num1; // double이 int로 명시적 형변환 됨
    System.out.println(num2); // 출력: 3

     

     


    🍊 short

    • short는 16비트(2바이트)로 표현되는 부호 있는 정수입니다.
    • 32,768부터 32,767까지의 값을 표현할 수 있습니다.

     

    예제코드

    public class ShortExample {
        public static void main(String[] args) {
            short temperature = -10;
            short year = 2023;
    
            System.out.println("온도: " + temperature);
            System.out.println("연도: " + year);
        }
    }

     

     

    🍊 int

    • int는 32비트(4바이트)로 표현되는 부호 있는 정수입니다.
    • 2,147,483,648부터 2,147,483,647까지의 값을 표현할 수 있습니다.

     

    예제 코드

    public class IntExample {
        public static void main(String[] args) {
            int population = 1000000;
            int distance = 1500;
    
            System.out.println("인구 수: " + population);
            System.out.println("거리: " + distance);
        }
    }

     

     

    🍊 long

    • long은 64비트(8바이트)로 표현되는 부호 있는 정수입니다.
    • 9,223,372,036,854,775,808부터 9,223,372,036,854,775,807까지의 값을 표현할 수 있습니다.

     

    예제 코드

    public class LongExample {
        public static void main(String[] args) {
            long worldPopulation = 7894561230L;
            long nationalDebt = 50000000000L;
    
            System.out.println("세계 인구: " + worldPopulation);
            System.out.println("국가 채무: " + nationalDebt);
        }
    }

     

     

    🍊 float

    • float은 32비트(4바이트)로 표현되는 부동 소수점 숫자입니다.
    • IEEE 754 표준에 따라 단정밀도 부동 소수점 숫자를 표현하며, 대략 6-7자리의 정밀도를 가집니다.

    예제 코드

    public class FloatExample {
        public static void main(String[] args) {
            float pi = 3.14f;
            float temperature = -12.5f;
    
            System.out.println("원주율: " + pi);
            System.out.println("온도: " + temperature);
        }
    }

     

     

    🍊 double

    • double은 64비트(8바이트)로 표현되는 부동 소수점 숫자입니다.
    • IEEE 754 표준에 따라 배정밀도 부동 소수점 숫자를 표현하며, 대략 15자리의 정밀도를 가집니다. 

    예제 코드

    public class DoubleExample {
        public static void main(String[] args) {
            double pi = 3.14159265359;
            double distance = 4567.891234;
    
            System.out.println("원주율: " + pi);
            System.out.println("거리: " + distance);
        }
    }

     

     

     


    🍊 요약

    오늘은 자바의 데이터 타입에 대해서 알아보았습니다! byte끼리는 더하기 연산자가 적용이 안된다는 사실이 제일 신선했네요. 기초로 돌아와서 차근차근 배우니까 또 놓쳤던 부분도 알게 되고 좋았습니다. 다음 포스팅에서는 자바의 연산자에 대해서 알아볼게요 👀

    LIST
Designed by Tistory.