Java的“char”和“String”的區別
一、概述
在 Java 中, char
和String
類型都處理字符。但它們具有不同的特性和用途。
在本教程中,我們將探討 Java 編程中char
和String
之間的區別。
2. char
和String
char
表示 Java 中的單個 16 位 Unicode 字符,例如字母、數字或符號。因此, char
類型的範圍是“ \u0000
”到“ \uffff
”(含)。我們也可以說 char 是一個從0
到65535 (2 16 -1)
char
符號 16 位整數。
但是, String
是 Java 中必不可少的類。字符串由單個或多個字符組成。
正如我們所看到的, char
和String
都與字符有關。接下來,讓我們仔細看看這兩種數據類型並討論它們的區別。
為簡單起見,我們將在示例中使用單元測試斷言查看結果。
3. char
是原始類型, String
是類
Java 中char
和String
的第一個區別是**char
是原始類型,而String
是類。換句話說,它是一個引用類型**。
因此, char
不需要對象的開銷。因此,它在性能和內存佔用方面具有優勢。但是,原始類型的功能有限,因為它們沒有任何成員方法。
此外,Java 泛型也不支持原始類型。
4. char
只能表示單個字符,而String是一個CharSequence
現在,讓我們看看String
類的簽名:
public final class String implements Serializable, Comparable<String>, CharSequence, Constable, ConstantDesc{ ... }
如代碼所示, String
類實現了CharSequence
接口。也就是說,一個String
對象就是一個字符序列。
但是**char
變量只能**攜帶一個字符。
讓我們通過一個例子來理解它:
char h = 'h';
char e = 'e';
char l = 'l';
char o = 'o';
String hello = "hello";
assertEquals(h, hello.charAt(0));
assertEquals(e, hello.charAt(1));
assertEquals(l, hello.charAt(2));
assertEquals(l, hello.charAt(3));
assertEquals(o, hello.charAt(4));
如我們所見,上面的測試中有四個char
變量( h, e, l, o
)。字符串“ hello
”由五個字符組成。我們可以通過將每個char
變量與CharSequence
的charAt()
方法的結果進行比較來驗證它。
此外,我們可以將字符串視為char
數組。 String
類為我們提供了toCharArray()
方法來將字符串分解為chars
中的字符:
char[] chars = new char[] { h, e, l, l, o };
char[] charsFromString = hello.toCharArray();
assertArrayEquals(chars, charsFromString);
5.加法( +
)運算符
當我們將加法運算符應用於兩個字符串時,它會將它們連接起來:
String h = "H";
String i = "i";
assertEquals("Hi", h + i);
但是,我們應該注意,**當我們執行char + char
時,結果是一個int
。該值是這兩個字符的總和hars.
**一個例子可以直接解決它:
char h = 'H'; // the value is 72
char i = 'i'; // the value is 105
assertEquals(177, h + i);
assertInstanceOf(Integer.class, h + i);
此外,當我們“添加”一個char
和一個String
時,該char
將被轉換為一個字符串並與給定的字符串連接起來。例如,我們經常將一個空字符串“添加”到char
中,以將char
變量轉換為單字符**String** :
char c = 'C';
assertEquals("C", "" + c);
但是,當我們用字符串“添加”多個char
變量時,我們應該注意字符串的位置。接下來,我們再看一個例子:
char h = 'H'; // the value is 72
char i = 'i'; // the value is 105
assertEquals("Hi", "" + h + i); //(1)
assertEquals("Hi", h + "" + i); //(2)
assertEquals("177", h + i + "");//(3)
在此示例中,前兩個加法產生字符串“ Hi
”。但最後一個的結果是字符串“ 177
” 。這是因為加法表達式是從左到右執行的。
在前兩個表達式中,無論是“” + h
還是h + “”,
Java 都是將char
變量h
轉換為String
並與空字符串拼接。然而,在最後一個中, h + i
產生一個int
結果 (72 + 105 = 177),正如我們之前了解到的那樣。然後,將int
結果轉換為字符串以與空字符串連接。
六,結論
在本文中,我們討論了 Java 中char
和String
之間的區別。讓我們在這裡列出它們作為摘要:
-
char
是原始類型。但是String
是引用類型。 -
char
只代表一個字符,而String
可以包含多個字符。 -
char + char =
兩個chars
的總和作為int
。String
+
String
連接兩個字符串。
與往常一樣,此處提供的所有代碼片段都可以在 GitHub 上找到。