-
[Java] 자바의 데이터 타입 (논리형, 문자형, 정수형, ...)Java 2023. 7. 13. 10:15728x90반응형
자바의 자료형을 알아보자
🍊 논리형 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'Java' 카테고리의 다른 글
[Java] OOP 추상클래스와 인터페이스 (1) 2023.07.21 [Java] 상속(Inheritance)과 메소드 오버라이딩 vs 오버로딩 (2) 2023.07.20 [Java] 자바의 정수와 실수의 계산, 부동 소수점 방식 (0) 2023.07.17 [Java] 자바의 조건문과 반복문의 이해와 활용 (for, while, if, swtich) (2) 2023.07.16 [Java] 자바의 연산자 (곱셈, 나눗셈, 덧셈, 비트연산자, 삼항연산자) (2) 2023.07.14