Java

[Java] 자바의 데이터 타입 (논리형, 문자형, 정수형, ...)

3o14 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