Java - 數字類
嗨,有抱負的Java程序設計師!今天,我們將要深入Java中的數字世界。如果你是編程新手,也別擔心;我們會從基礎開始,逐步進階。在這篇教程結束時,你將能像專家一樣操作數字!
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();
}
}
讓我們來分解一下這段代碼中發生了什麼:
- 我們創建一個
Random
物件以生成一個1到100之間的隨機數字。 - 我們使用
Scanner
來讀取用戶輸入。 - 我們使用do-while循環來不斷要求猜測,直到猜對正確數字為止。
- 我們使用
compareTo()
來檢查猜測是否太低或太高。 - 我們使用
equals()
來檢查猜測是否正確。
這個遊戲展示了我們如何在實際應用中使
Credits: Image by storyset