CodeGym /행동 /JAVA 25 SELF /Java에서 숫자와 문자

Java에서 숫자와 문자

JAVA 25 SELF
레벨 6 , 레슨 1
사용 가능

1. 어떤 종류의 숫자가 있나요?

프로그래밍에서는 숫자와 끊임없이 작업합니다 — 사용자 나이부터 은하의 별 개수, 은행 계좌의 잔액까지. 하지만 과제에 따라 필요한 숫자 타입이 다릅니다: 어떤 때는 정수만 저장하면 되고, 어떤 때는 매우 정확한 소수가 필요하며, 또 어떤 때는 “음수가 없는” 숫자가 필요합니다.

정수 (int 등)

정수는 소수 부분이 없는 수입니다.
Java에서는 가장 자주 int 타입을 사용하지만, 이외에도 크기와 범위가 다른 여러 가지 대안이 있습니다.

  • int — 정수를 위한 기본 “작업용” 타입입니다. 매우 큰(또는 작은) 값도 담을 수 있으면서 메모리도 많이 차지하지 않습니다. 예를 들어 좋아요 수, 나이, 1년의 일수 등을 셀 때는 거의 항상 int를 사용합니다.
  • long — 값이 매우 클 수 있을 때 사용합니다(예: 수십억이나 수조 단위). 예: YouTube의 전체 기간 누적 조회수 저장.
  • short — 메모리를 아끼지만 드물게 사용하는 타입입니다. 작은 값이 반복적으로 매우 많이 나타나는 곳에 적합합니다(예: 오디오 데이터, 색상 구성 요소).
  • byte — 더 작은 값용으로, 특히 메모리 절약이 중요한 그래픽 처리나 파일 작업에서 유용합니다.

실수 (double, float)

때로는 소수 부분이 있는 수를 다뤄야 합니다. 예를 들어 기온, 학생의 평균 점수, 소수점이 있는 상품 가격 등입니다.

  • double — 실수를 저장하기 위한 기본 타입입니다. 대부분의 계산에 충분할 정도로 정확합니다(예: 3.1415926535…).
  • float — 더 가볍고 덜 정확한 타입으로, 메모리 절약이 중요한 컴퓨터 그래픽이나 대규모 데이터 배열 처리에서 자주 사용됩니다.

특수 숫자 타입

  • BigInteger — 표준 범위를 초과하는 거대한 수를 다뤄야 할 때(예: 암호학, 천문 계산).
  • BigDecimal — 소수 계산을 정확하게 하기 위한 클래스(금융, 이자 계산). doublefloat에 내재된 부정확성을 피하는 데 도움이 됩니다.

2. 값의 범위

정수 타입은 양수와 음수를 모두 저장할 수 있습니다. 값이 “0보다 클 수도, 작을 수도” 있을 때 유용합니다. 예: 기온, 계좌 잔액, 해수면 대비 높이.

예:

  • int : -10, 0, 50
  • long : 0, 10, -1000_000_000_000_000_000L

정수 타입

타입 크기 값의 범위 사용 예
byte
1 바이트 -128 ~ 127 -128, 0, 127
short
2 바이트 -32 768 ~ 32 767 -1000, 0, 32000
int
4 바이트 -2 147 483 648 ~ 2 147 483 647 -1000000, 0, 2000000
long
8 바이트 -9 223 372 036 854 775 808
~ 9 223 372 036 854 775 807
-10_000_000_000, 1

실수 타입

타입 크기 값의 예 설명
float
4 바이트 3.14f, -0.001f 단정밀도(약 7자리)
double
8 바이트 3.1415, -1.7E+308 배정밀도(약 15~16자리)

3. 숫자 리터럴의 접미사

어떤 상황에서는 숫자에 사용할 타입을 명시해야 합니다. 이때 접미사를 사용합니다:

  • L 또는 llong 타입용(예: 10000000000L)
  • F 또는 ffloat 타입용(예: 3.14f)
  • D 또는 ddouble 타입용(일반적으로 필요 없음. 접미사가 없는 실수 리터럴은 double)

접미사를 쓰지 않으면 기본적으로 정수는 int, 실수는 double로 간주됩니다. 예를 들어 42int, 3.14double입니다.

왜 필요할까요? 예를 들어 큰 수를 long 타입 변수에 대입할 때 오류를 피하려면 이렇게 합니다:

long bigNumber = 9000000000L; // L을 빼면 컴파일 오류가 발생합니다

밑줄 _ 구분자

숫자가 길면 0에서 쉽게 헷갈립니다. 보기 좋고 읽기 편하도록 Java에서는 숫자 리터럴 내부에 밑줄을 사용할 수 있습니다.

int population = 146_700_000;
long stars = 100_000_000_000L;
숫자 가독성을 위한 밑줄 사용

전적으로 합법적입니다. 컴파일러는 밑줄을 무시하고, 여러분은 한눈에 자리수를 볼 수 있습니다. 단, 시작이나 끝, 소수점 뒤, 접미사 앞에는 밑줄을 둘 수 없습니다.

4. 문자형 char: 무엇이며 왜 필요할까요?

char 타입은 하나의 문자를 저장하는 데 사용됩니다. 글자, 숫자, 구두점, 공백, 특수문자, 심지어 스마일리까지 포함합니다.

예시:

char letter = 'A';
char digit = '7';
char symbol = '?';
char cyrillic = '\u0416';
char euro = '€';
char smile = '☺'; // 네, 이것도 됩니다!

중요한 규칙:

  • char 값은 작은따옴표로 표기합니다: 'A', '7', '#'.
  • 정확히 하나의 문자입니다! 'AB'처럼 쓰면 컴파일러가 불평합니다.
  • 각 문자에는 고유한 숫자 코드(Unicode)가 있습니다.

Unicode: 전 세계의 문자

Java는 Unicode 표준을 사용하므로 라틴 문자뿐 아니라 키릴 문자, 한자, 이모지, 심지어 고대 이집트 상형문자까지 저장할 수 있습니다(필요하다면).

흥미로운 사실:
char는 본질적으로 16비트 숫자(0부터 65535까지)이며, 각 값에는 해당 문자가 연결되어 있습니다.

5. 문자와 숫자: Unicode로 연결

각 문자는 내부적으로 숫자이므로 charint로, 그 반대로도 쉽게 변환할 수 있습니다.

예: 문자의 Unicode 코드 알아보기

public class CharToInt {
    public static void main(String[] args) {
        char ch = 'A';
        int code = ch; // char → int의 묵시적 변환

        System.out.println("문자 '" + ch + "': " + code);
    }
}

결과:

문자 'A': 65

이제 반대로 — 코드에서 문자를 얻어 봅시다:

public class IntToChar {
    public static void main(String[] args) {
        int code = 1040; // 유니코드 U+0410(키릴 문자 A)의 코드
        char ch = (char) code; // int → char의 명시적 변환

        System.out.println("코드 " + code + "에 해당하는 문자: " + ch);
    }
}

결과:

코드 1040에 해당하는 문자: \u0410

6. Java의 기본(primitive) 타입

타입 크기 (비트) 값의 범위 값의 예 비고
byte
8 -128 ... 127 42 매우 드물게 사용
short
16 -32,768 ... 32,767 12345 메모리 절약용
int
32 -2,147,483,648 ... 2,147,483,647 1000000 정수의 기본형
long
64 ≈ −9.22 × 1018 ... ≈ 9.22 × 1018 5000000000L 아주 큰 정수용
float
32 ~±3.4 × 10-38 ... ±3.4 × 1038 3.14f 실수, 낮은 정밀도
double
64 ~±1.7 × 10-308 ... ±1.7 × 10308 2.718 실수, 높은 정밀도
char
16 0 ... 65 535 (Unicode) '\u0416', 'A', '?' 단일 문자
boolean
1 true, false true 논리값
1
과제
JAVA 25 SELF, 레벨 6, 레슨 1
잠금
RPG 영웅을 위한 인벤토리 생성 🎮
RPG 영웅을 위한 인벤토리 생성 🎮
1
과제
JAVA 25 SELF, 레벨 6, 레슨 1
잠금
드래곤의 소굴에서 보물 세기 🐉
드래곤의 소굴에서 보물 세기 🐉
1
과제
JAVA 25 SELF, 레벨 6, 레슨 1
잠금
고대 룬 해독 🔮
고대 룬 해독 🔮
1
과제
JAVA 25 SELF, 레벨 6, 레슨 1
잠금
문자와 숫자의 양방향 마법 ✨
문자와 숫자의 양방향 마법 ✨
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION