Java中的字串是什麼?
在程式設計中,字串是非常常用的。java中的字串是一個對象,表示由字元數組支援的字元序列。String類別在 Java 中是不可變的,並實作Comparable、Serializing和CharSequence介面。讓我們來看一個例子來理解。String str = "string"
這裡str是6個字元的序列,分別是s、t、r、i、n和g。
字元數組索引 | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
價值 | s | t | r | 我 | n | G |
記憶體位址 | 0x12824 | 0x12825 | 0x12826 | 0x12827 | 0x12828 | 0x12829 |
字串初始化的方式
初始化字串有兩種方法。- 字串文字
- 新幹員
字串字面量
上面的範例使用了宣告字串的最簡單、最直接的方法。每當編譯器解釋字串文字時,它總是會轉換為 String 物件。String str = "string";
新幹員
我們也可以使用 new 運算子來初始化字串。String strNew = new String("using new operator");
例子
import java.io.*;
import java.lang.*;
class StringInitializationExample {
public static void main(String[] args)
{
//declare java string with a string literal
String str = "a string literal";
System.out.println("String str = " + str);
//declare string using new operator
String strNew = new String("using new operator");
System.out.println("String strNew = " + strNew);
}
}
輸出
String str = 字串文字 String strNew = 使用 new 運算符
String、StringBuilder、StringBuffer
我們已經討論了什麼是 String 類,因此我們將討論其他兩個類別及其用途,以及 Java 在已經為我們提供 String 類別的情況下引入這兩個類別的原因。您最好到頂部對 String 類別進行修訂,以便更好地理解它。原因
我們知道 String 類別物件是不可變的,因此每當我們需要更改字串時,它都不會改變當前對象,但更改後的值始終儲存為新的 String 物件。因此,如果我們需要一次又一次地更改該值,記憶體也會被消耗。保持這一點Java為我們提供了StringBuilder和StringBuffer類別。現在我們將看看它們在這種情況下有何用處。字串緩衝區
String 是不可變字元序列的表示,而StringBuffer是可變字元序列。它使用大多數String類別方法以及它自己的一些方法來更改字元的內容和序列。它是線程安全的,因為它的方法是同步的,供多個線程使用,從而保持串行順序。它實作Serialized、Appendable和CharSequence介面。句法
StringBuffer str = new StringBuffer("Happy Java Programming");
字串產生器
StringBuilder 也表示可變的字元序列。它提供了一個API,該API與StringBuffer類別相容,但它不是線程安全的。因此,在不涉及多個執行緒的情況下,最好使用StringBuilder類,因為在許多情況下它比StringBuffer類別更快。這個類別的關鍵方法是insert和append。它還實作Serialized、Appendable和CharSequence介面。句法
StringBuilder str = new StringBuilder("Happy Java Programming");
字串操作
在Java中,我們可以執行字串操作,例如連接、比較、拆分、查找長度、替換字串等。字串方法
Java String 類別提供了各種用於操作字串或執行上述操作的方法。讓我們看看下表中的一些字串方法。方法 | 描述 |
---|---|
Char charAt(int 索引) | 它傳回提供的索引處的 char 值。 |
字串連接(字串 str) | 它透過將指定的字串組合到該字串的末尾來傳回一個字串。 |
布林值包含(CharSequence s) | 如果字串包含指定的 char 值序列,則傳回 true。 |
布爾 contentEquals(CharSequence cs) | 它將字串與提供的字元序列進行匹配。 |
布林 contentEquals(StringBuffer sb) | 它將字串與提供的字串緩衝區進行匹配。 |
布林結束(字串後綴) | 它將字串結尾與提供的後綴進行比較。 |
布爾等於(對象 anObject) | 它將字串與提供的物件進行匹配。 |
布林值 equalsIgnoreCase(String anotherString) | 此方法比較兩個字串而不考慮區分大小寫。 |
靜態字串格式(字串格式,物件...args) | 它使用提供的格式和參數返回格式化的字串。 |
位元組 getBytes() | 此方法使用平台的預設字元集將字串編碼為位元組序列,然後將其儲存到新的位元組數組中。 |
void getChars(int begin, int end, char[] dst, int dstBegin) | 它將字串中的字元複製到目標字元陣列中。 |
int 哈希碼() | 它傳回字串的哈希碼。 |
int indexOf(int ch) | 它會傳回字串中首先出現的指定字元的索引。 |
int indexOf(int ch, int fromIndex) | 它會傳回從該字串中提供的索引開始首先出現的指定字元的索引。 |
int indexOf(字串 str) | 它在字串中搜尋提供的子字串並傳回第一次出現的索引。 |
int indexOf(字串 str, int fromIndex) | 它開始從給定索引開始在字串中搜尋提供的子字串,並傳回第一次出現的索引。 |
字串實習生() | 此方法傳回字串的規範表示形式。 |
int lastIndexOf(int ch) | 此方法在字串中搜尋提供的字元並傳回最後一次出現的索引。 |
int lastIndexOf(int ch, int fromIndex) | 此方法從給定索引向後搜尋字串中提供的字符,並傳回最後一次出現的索引。 |
int lastIndexOf(字串 str) | 此方法在字串中搜尋提供的子字串並傳回最後一次出現的索引。 |
int lastIndexOf(字串 str, int fromIndex) | 此方法從給定索引向後搜尋字串中提供的子字串,並傳回最後一次出現的索引。 |
整數長度() | 該方法傳回字串的長度。 |
布林匹配(字串正規表示式) | 它透過將字串與提供的正規表示式進行匹配來傳回 true 或 false。 |
字串替換(char oldValue,char newValue) | 此方法在將字串中所有提供的 oldValue 替換為 newValue 後傳回字串。 |
字串[]分割(字串正規表示式) | 此方法根據字串中提供的正規表示式來尋找所有符合項,並將其拆分為這些匹配項。 |
布林開始於(字串前綴) | 它透過測試以提供的前綴開頭的字串來傳回 true 或 false。 |
字串子字串(int beginIndex) | 此方法傳回一個字串,該字串是該字串的子字串。 |
字串 toLowerCase() | 它使用預設區域設定的規則將字串的所有字元轉換為小寫。 |
字串修剪() | 此方法從字串中刪除所有前導和尾隨空格並傳回它。 |
靜態字串 valueOf(char c) | 它傳回 char 參數的字串表示形式。 |
例子
import java.io.*;
import java.lang.*;
class JavaStringsExample {
public static void main(String[] args) {
//create a string
String greeting = "Hello! World";
System.out.println("String: " + greeting);
//getting the length of greeting object
int length = greeting.length();
System.out.println("Length: " + length);
//create first string
String first = "Java ";
System.out.println("First String: " + first);
//create second string
String second = "Programming";
System.out.println("Second String: " + second);
//joining two strings
String joinedString = first.concat(second);
System.out.println("Joined String: " + joinedString);
String jpf = "Java programming";
String jps = "Java programming";
String jpt = "Python programming";
//compare jpf and jps strings
boolean result1 = jpf.equals(jps);
System.out.println("Strings jpf and jps are equal: " + result1);
//compare jpf and jpt strings
boolean result2 = jpf.equals(jpt);
System.out.println("Strings jpf and jpt are equal: " + result2);
//converting jpf to uppercase
System.out.println("Upper case jpf: " + jpf.toUpperCase());
//replacing g character with v in jpf
System.out.println("Replacing g with v in jpf: "+jpf.replace("g", "v"));
}
}
輸出
弦:您好!世界長度:12 第一個字串:Java 第二個字串:程式連接字串:Java 程式字串jpf 和jps 相等:true 字串jpf 和jpt 相等:false 大寫jpf:JAVA PROGRAMMING 在jpf 中用v替換g:java provramminv