Java - 數字類

嗨,有抱負的Java程序設計師!今天,我們將要深入Java中的數字世界。如果你是編程新手,也別擔心;我們會從基礎開始,逐步進階。在這篇教程結束時,你將能像專家一樣操作數字!

Java - Number

Java數字的介紹

在Java中,數字不僅僅是簡單的值;它們擁有超能力的物件!Java提供了多個類別來處理不同類型的數字。這些類別是java.lang包的一部分,它會自動被每個Java程序導入。

數字類別的階層結構

讓我們從鳥瞰的角度來看看數字類別的階層結構:

數字 (抽象)
|
+-------+-------+
|       |       |
整數    浮點數  雙精度
|
字節

Number類別是所有數值包裝類別的超類別。它是抽象的,這意味著你不能直接創建一個Number物件,但你可以使用它的子類別。

包裝類別

Java為每個原始數值類型提供包裝類別。這些類別將原始值包裝在物件中,賦予它們額外的功能。以下是最常使用的數值包裝類別的表格:

原始類型 包裝類別
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關鍵字後跟包裝類別的構造函數。

但是等等,有更簡單的方法!Java提供了自動封裝,它會自動將原始類型轉換為它們的包裝物件:

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

這不很方便嗎?Java在我們背後默默為我們封裝!

常見的數字方法

現在我們有了數字物件,讓我們來探索它們提供的一些有用方法:

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()方法返回:

  • 如果第一個數字小於第二個,則返回負值
  • 如果它們相等,則返回零
  • 如果第一個數字大於第二個,則返回正值

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. 我們使用do-while循環來不斷要求猜測,直到猜對正確數字為止。
  4. 我們使用compareTo()來檢查猜測是否太低或太高。
  5. 我們使用equals()來檢查猜測是否正確。

這個遊戲展示了我們如何在實際應用中使

Credits: Image by storyset