자바 - 숫자 클래스

안녕하세요, 자바 프로그래머를 꿈꾸는 여러분! 오늘은 자바에서 숫자의 흥미로운 세계에 몸을 던지기 위해 이야기해볼 거예요. 프로그래밍에 새로운 사람이라도 걱정 마세요; 기본부터 시작해서 점진적으로 고급으로 가겠습니다. 이 튜토리얼을 끝내면 여러분도 숫자를 마술사처럼 다룰 수 있을 거예요!

Java - Number

자바 숫자 개요

자바에서 숫자는 단순한 값만큼은 아니요, 초능력을 가진 객체입니다! 자바는 다양한 종류의 숫자를 처리하기 위해 여러 클래스를 제공합니다. 이 클래스들은 모두 java.lang 패키지에 속해 있으며, 모든 자바 프로그램에서 자동으로 임포트됩니다.

숫자 클래스 계층 구조

숫자 클래스 계층 구조를 한눈에 보아보겠습니다:

Number (추상)
|
+-------+-------+
|       |       |
Integer  Float  Double
|
Byte

Number 클래스는 모든 숫자 包装 클래스의 조상 클래스입니다. 추상 클래스이므로 Number 객체를 직접 만들 수는 없지만, 하위 클래스를 사용할 수 있습니다.

包装 클래스

자바는 각 기본 숫자 타입에 대해 包装 클래스를 제공합니다. 이 클래스들은 기본 값들을 객체로 "包装"하여 추가적인 기능을 제공합니다.以下는 가장 일반적으로 사용되는 숫자 包装 클래스들의 표입니다:

기본 타입 包装 클래스
byte Byte
short Short
int Integer
long Long
float Float
double Double

숫자 객체 생성

몇 가지 숫자 객체를 만들어 보고 어떻게 동작하는지 살펴보겠습니다:

Integer intObj = new Integer(42);
Double doubleObj = new Double(3.14159);
Float floatObj = new Float(2.5f);

이 예제에서는 다양한 숫자 타입의 객체를 만들고 있습니다. new 키워드를 사용하여 包装 클래스의 생성자를 호출하는 것을 주의하세요.

하지만, 더 쉬운 방법이 있습니다! 자바는 자동装箱을 제공하여 기본 타입을 包装 객체로 자동 변환합니다:

Integer intObj = 42;
Double doubleObj = 3.14159;
Float floatObj = 2.5f;

멋지지 않나요? 자바는 뒷면에서 包装을 해줍니다!

일반 숫자 메서드

이제 우리는 숫자 객체를 가지고 있으니, 제공하는 몇 가지 유용한 메서드를 탐험해보겠습니다:

1. valueOf()

valueOf() 메서드는 숫자 객체를 생성하는 편리한 방법입니다:

Integer intObj = Integer.valueOf(42);
Double doubleObj = Double.valueOf("3.14159");

이 메서드는 생성자보다 성능을 더 높게 하기 위해 캐시된 객체를 재사용할 수 있어 часто 선호됩니다.

2. xxxValue()

이 메서드들은 숫자 객체를 기본 타입으로 변환합니다:

Integer intObj = 42;
int intValue = intObj.intValue();
double doubleValue = intObj.doubleValue();

여기서, intValue()는 int 값으로 돌려주고, doubleValue()는 double로 변환합니다.

3. compareTo()

이 메서드는 두 숫자 객체를 비교합니다:

Integer num1 = 42;
Integer num2 = 100;
int result = num1.compareTo(num2);
System.out.println(result); // 출력: -1

compareTo() 메서드는 다음과 같은 값을 반환합니다:

  • 첫 번째 숫자가 두 번째보다 작으면 음수
  • 같으면 0
  • 더 크면 양수

4. equals()

이 메서드는 두 숫자 객체가 같은지 확인합니다:

Integer num1 = 42;
Integer num2 = 42;
boolean areEqual = num1.equals(num2);
System.out.println(areEqual); // 출력: true

기억하세요, equals()는 값들을 비교하는 것이고, 객체 참조를 비교하는 것이 아닙니다!

숫자와 즐기는 미니 프로젝트

새로운 지식을 사용하여 작은 프로젝트를 만들어 보겠습니다. 간단한 숫자 추측 게임을 만듭니다:

import java.util.Random;
import java.util.Scanner;

public class NumberGuessingGame {
public static void main(String[] args) {
Random random = new Random();
Integer secretNumber = random.nextInt(100) + 1;
Scanner scanner = new Scanner(System.in);
Integer guess;
int attempts = 0;

System.out.println("숫자 추측 게임에 오신 것을 환영합니다!");
System.out.println("1부터 100 사이의 숫자를 생각 중입니다.");

do {
System.out.print("추측을 입력하세요: ");
guess = scanner.nextInt();
attempts++;

if (guess.compareTo(secretNumber) < 0) {
System.out.println("너무 낮습니다! 다시 시도하세요.");
} else if (guess.compareTo(secretNumber) > 0) {
System.out.println("너무 높습니다! 다시 시도하세요.");
} else {
System.out.println("축하합니다! " + attempts + "번에 숫자를 맞췄습니다!");
}
} while (!guess.equals(secretNumber));

scanner.close();
}
}

이 코드에서는 무엇이 일어나고 있는지 분석해보겠습니다:

  1. 우리는 Random 객체를 사용하여 1부터 100 사이의 랜덤 숫자를 생성합니다.
  2. Scanner를 사용하여 사용자 입력을 읽습니다.
  3. correct 숫자를 추측할 때까지 do-while 루프를 사용합니다.
  4. compareTo()를 사용하여 추측이 너무 낮거나 높은지 확인합니다.
  5. equals()를 사용하여 추측이 정확한지 확인합니다.

이 게임은 우리가 실제 응용 프로그램에서 숫자 객체와 메서드를 어떻게 사용할 수 있는지 보여줍니다. 단순히 숫자를 저장하는 것 이상의 의미를 가진 숫자를 조작하고 비교하는 방법입니다.

결론

자바의 숫자 클래스가 할 수 있는 일들은 이정도밖에 되지 않았습니다. 자바 여정을 계속하면 더 강력한 기능과 메서드를 발견할 것입니다. 기억하세요, 연습은 고수의 첫 걸음이니, 이 개념들을 자신의 프로젝트에서 실험해보지 마세요.

코딩을 계속하고, 계속 배우며, 가장 중요한 것은 자바 숫자와 즐기는 거예요!

Credits: Image by storyset