자바 자료형과 상수 정리

My Pale Blue Dot·2025년 2월 25일
0

JAVA

목록 보기
2/35
post-thumbnail

📅 날짜

2025-02-25

📌 학습 내용

1. 자바 기본 자료형

자바의 자료형은 크게 정수형, 실수형, 문자형, 논리형으로 나뉜다.

✅ 정수형 (Integer Type)

자료형크기범위비고
byte1byte-128 ~ 127메모리 절약 시 사용
short2byte-32,768 ~ 32,767사용 빈도 낮음
char2byte0 ~ 65,535음수 없음 (유니코드 지원)
int4byte-2³¹ ~ 2³¹-1기본 정수형
long8byte-2⁶³ ~ 2⁶³-1L 접미사 사용 (100000L)

✅ 정수 표현 방식

int binaryNum = 0b10101101;  // 2진수
int decimalNum = 173;        // 10진수
int octalNum = 0255;         // 8진수
int hexNum = 0xad;           // 16진수

System.out.printf("%d %d %d %d\n", binaryNum, decimalNum, octalNum, hexNum);

byte형 범위 확인

byte n1 = (byte) -129;  // 오버플로우 발생
byte n2 = 127;
byte n3 = (byte) 129;   // 129는 byte 범위를 초과하여 오류 발생

System.out.println(n1); // 데이터 손실
System.out.println(n3);

2. 실수형 (Floating Point)

  • float (4바이트): 약 7자리 정밀도, f 접미사 필요 (3.14f)
  • double (8바이트, 기본형): 약 15~16자리 정밀도

✅ 정밀도 확인

float f = 0.123456789123456789F;
double d = 0.123456789123456789;

System.out.println(f); // 0.12345679 (소수 7자리까지만 정확)
System.out.println(d); // 0.12345678912345678 (소수 15자리까지 정확)

✅ 부동 소수점 연산 오차 확인

float num = 0.1F;
for(int i = 0; i <= 1E5; i++) {
    num = num + 0.1F;
}
System.out.println("num : " + num); // 예상과 다른 값 출력

💡 해결 방법BigDecimal 사용

import java.math.BigDecimal;

BigDecimal num1 = new BigDecimal("0.1");
BigDecimal num2 = new BigDecimal("0.2");
BigDecimal sum = num1.add(num2);

System.out.println(sum); // 정확히 0.3 출력

3. 문자형 (Character Type)

  • char (2바이트): 유니코드 기반 문자 저장

char 타입 활용

char ch1 = 'a';
System.out.println(ch1); // a
System.out.println((int)ch1); // 97 (ASCII 코드 값)

char ch2 = 98;
System.out.println(ch2); // b
System.out.println((int)ch2); // 98

✅ 한글 유니코드 활용

char ch3 = 0xac00; // '가' (한글 유니코드)
System.out.println(ch3); // 가
System.out.printf("%c\n", '\uAC01'); // 각 (유니코드 이스케이프 사용)

4. 논리형 (Boolean Type)

  • boolean: true 또는 false만 저장 가능

boolean 활용 예제

boolean flag = (10 > 11);

if(flag) {
    System.out.println("참인 경우 실행");
} else {
    System.out.println("거짓인 경우 실행");
}

5. 상수(Constant)

자바에서 상수(Constant)는 변경할 수 없는 값을 의미하며, 리터럴 상수심볼릭 상수로 나뉜다.

✅ 리터럴 상수 (Literal Constant)

  • 이름이 없는 상수로, 코드 내에서 직접 사용됨.
  • 예제: 100, 'a', 3.14
  • 리터럴 접미사: L (long), f (float)

✅ 심볼릭 상수 (Symbolic Constant)

  • final 키워드를 사용하여 이름을 부여하고 변경할 수 없도록 지정.
  • 환경 설정 값, 수학적 상수 등을 final로 설정하여 사용.
int n1 = 100; // 리터럴 상수
final int n2 = 200; // 심볼릭 상수

final double PI = 3.14;
double result = PI * 4 * 4;  // PI 값 변경 불가능

System.out.println(result);

📌 느낀 점

  • 기본 자료형과 표현 방식에 대해 정리하면서 각 자료형의 크기와 범위를 명확하게 이해할 수 있었다.
  • 부동 소수점 오차 문제가 발생하는 이유와 BigDecimal을 활용한 해결 방법을 알게 되었다.
  • char 타입이 2바이트로 유니코드를 지원한다는 점을 다시 한번 확인했다.
  • 상수(Constant)의 개념을 정리하면서 final 키워드를 사용하는 이유를 알게 되었다.

📌 요약

  1. 정수형과 실수형의 크기 및 특징을 정리
  2. 부동 소수점 연산 오차 문제 및 BigDecimal 해결책 학습
  3. char의 유니코드 활용 및 문자열(String) 특징 정리
  4. boolean 자료형의 간단한 예제 테스트
  5. 리터럴 상수 vs 심볼릭 상수의 차이 및 final 키워드 사용법 정리

📌 참고 자료

profile
Here, My Pale Blue.🌏

0개의 댓글