Object.toString() 與 String.valueOf()
一、概述
在本文中,我們將討論String.valueOf()和Object.toString()方法。 String.valueOf() 和 Object.toString() 方法都允許我們將數據類型更改為字符串,但我們使用它們的方式不同。我們將探討如何使用每一個以及它們之間的區別。
2. toString()方法
toString()方法位於 Java Object 類中,它是 Java 中所有其他對象的父類。這意味著我們可以在任何對像上調用toString()方法,它將返回該類的字符串表示形式。默認情況下,它將返回類的名稱和hashCode的表示,但通過重寫toString()方法,我們可以獲得一些有用的信息。
建議類覆蓋toString()方法以提供有關實例的一些簡潔但有用的信息。這裡我們有一個簡單的類,它重寫了toString()方法,如下所示:
public class Student {
public String name;
public int age;
@Override
public String toString() {
return "Student(" + name + ", age " + age + ')';
}
}
3. String.valueOf()方法
String.valueOf()是一個靜態方法,我們可以使用它來將各種數據類型轉換為字符串。與大多數valueOf()方法一樣,它有幾個重載變體以允許它接受以下任何參數:
-
bool或Boolean -
Char -
Char數組 -
double或Double -
float或Float -
int或Integer -
long或Long -
Object
String.valueOf()實現符合我們的預期。它將返回布爾值的“true”或“false”字符串。我們可以將 char 或 char 數組轉換為字符串。對於數字,它將返回該數字的字符串表示形式。
我們可以像這樣測試String.valueOf()的結果:
@Test
void whenCallingValueOf_thenMapToString() {
char[] exampleCharArray = {'a', 'b', 'c'};
Student alice = new Student("Alice", 5);
assertEquals("true", String.valueOf(true));
assertEquals("a", String.valueOf('a'));
assertEquals("abc", String.valueOf(exampleCharArray));
assertEquals("123.935", String.valueOf(123.935));
assertEquals("2222.3", String.valueOf(2222.3f));
assertEquals("2222", String.valueOf(2222));
assertEquals("123456789", String.valueOf(123456789L));
assertEquals("123456789", String.valueOf(123456789L));
assertEquals("Student(Alice, age 5)", String.valueOf(alice));
}
請注意,當我們將Student對像傳遞給valueOf()時,我們得到了上面定義的toString()方法的結果。
一個有趣的情況是,如果我們將null傳遞給valueOf(),它將返回字符串“null”而不是拋出空指針異常。
4. 我們應該使用哪一個?
String.valueOf()和Object.toString()方法有不同的用例,所以我們應該同時使用兩者。當我們創建一個新類時,我們應該覆蓋toString()方法以輸出有關該實例的有用信息。
當我們將一個對像傳遞給String.valueOf()時,它將對該對象調用 toString() 方法並返回輸出。 toString()方法允許我們在想要將對象轉換為字符串時自定義輸出。 String.valueOf()允許我們安全地將對象轉換為字符串,而無需管理空值。
當我們需要將實例轉換為字符串時,我們應該使用String.valueOf()方法來確保 null 安全。
5.結論
在本文中,我們了解了String.valueOf()和Object.toString()如何協同工作,以及我們如何使用兩者將數據類型轉換為字符串。
String.valueOf()和Object.toString()提供相似的結果,但我們使用它們的方式不同。靜態字符串 valueOf() 允許我們傳遞各種數據並返回具有null安全性的字符串。 Object.toString()供我們覆蓋並提供實例的文本表示。
所有代碼示例都可以在 GitHub 上找到。