Java字符串的基本操作


Java沒有內置字符串類型,而是在標准Java類庫中,提供了一個預定義類,很自然的叫做String。每個用雙引號括起來的字符串都是String類的一個實例

字串

String類的substring方法可以從一個較大的字符串提取出一個字串。

注釋:類似於C/C++,Java字符串中的代碼單元和代碼點從0開始計數

示例:

String.substring(0,3);//返回一個字符串,為原字符串從0到3,但不包括3的子串

該方法可以較為容易的計算字串長度:例如:3-1=2

程序示例

public class FirstCode1 {
   public static void main(String[] args) {
       String greeting = "HelloWorld";
       String greeter = greeting.substring(3,5);
       System.out.println("greeter = "+greeter);
  }
}

運行結果

greeter = lo

字符串拼接

Java語言允許使用+號連接(拼接)兩個字符串。

當將一個字符串與一個非字符串進行拼接時,后者會轉換成字符串(任何一個Java對象都可以轉換成字符串

這種特性通常運用在輸出語句中

示例:

System.out.println("Hello"+3+"World");

如果需要把多個字符串放在一起,用一個界定符分隔,可以使用靜態join方法

示例:

String all = String.join("\\","S","Hello","World");

在Java11中還有一個repeat方法

示例:

String repeater = "java".repeat(2);//javajava

程序實例

public class FirstCode1 {
   public static void main(String[] args) {
       //+號字符串連接
       String greeting1 = "Hello";
       String greeting2 = "World";
       System.out.println("greeting3+greeting2 = "+ (greeting1+greeting2));

       //join方法
       String all = String.join("!","Hello","World","The","China","xiao");
       System.out.println("all = "+all);
  }
}

運行結果

greeting3+greeting2 = HelloWorld
all = Hello!World!The!China!xiao

不可變字符串

Java中字符串是不可變的

Java的設計者任務共享帶來的高效率遠遠勝過於提取字串,拼接字符串所帶來的低效率。

大多數情況下都不會修改字符串,而只是需要對字符串進行比較(有一種例外情況,將來自於文件或鍵盤的單個字符或較短的字符串組裝成字符串)

Java中的字符串,類似於C/C++中的char指針。

檢測字符串是否相等

equal方法

可以使用equals方法檢測兩個字符串是否相等

示例:

s.equals(t);

如果兩字符串相等,返回true,如果兩字符串不相等,返回false。

equalsIgnoreCase方法

該方法檢測兩個字符串是否相等(不區分大小寫的情況下)

示例:

s.equalsIgnoreCase(t);

如果兩字符串相等,返回true,如果兩字符串不相等,返回false。

利用==檢驗字符串相等性的缺點

使用==只能檢驗出,存儲在同一位置的字符串。如果兩個字符串相同,但是沒有存儲在同一為止,那么使用==檢測,他就是錯誤的。

千萬不要使用==運算符測試字符串的相等性,以免在程序中出現最糟糕的bug,看起來這種bug就像是隨機產生的間歇性錯誤。

程序實例

public class FirstCode1 {
   public static void main(String[] args) {
       //equals方法使用
       String greet1 = "Hello";
       String greet2 = "World";
       String greet3 = "Wor"+"ld";
       if (greet3.equals(greet2)){
           System.out.println("greet2 等於 greet3");
      }else {
           System.out.println("greet2 不等於 greet3");
      }
       //equalsIgnoreCase方法使用
       String greet4 = "HelloWorld";
       String greet5 = "helloworld";
       String greet6 = "helloWorld";
       if (greet4.equalsIgnoreCase(greet5)){
           System.out.println("greet4 等於 greet5");
      }else {
           System.out.println("greet4 不等於 greet5");
      }
       if (greet4.equalsIgnoreCase(greet6)){
           System.out.println("greet4 等於 greet6");
      }else {
           System.out.println("greet4 不等於 greet6");
      }
       if (greet5.equalsIgnoreCase(greet6)){
           System.out.println("greet5 等於 greet6");
      }else {
           System.out.println("greet5 不等於 greet6");
      }

       //使用“==”檢測字符串是否相等
       String greeting1 = "helloworld";
       String greeting2 = "hello"+"wor"+"ld";
       if (greeting1 == greeting2){
           System.out.println("greeting1 等於 greeting2");
      }else {
           System.out.println("greeting1 不等於 greeting2");
      }
  }
}

運行結果

greet2 等於 greet3
greet4 等於 greet5
greet4 等於 greet6
greet5 等於 greet6
greeting1 等於 greeting2

空串與Null串

空串

空串“”是長度為0的字符串。可以調用以下代碼檢查一個字符串是否為空:

if(str.length() == 0)
   //或者
if(str.equals(""))

空串是一個Java對象,有自己的長度和內容。

null

String變量還可以放一個特殊的值,null,表示目前該變量沒有與任何對象關聯。

判斷一個字符串是否為null

if(str == null)

判斷一個字符串既不是空串也不是null

if(str != null && str.length() != 0)

注意:在null上調用方法會出現錯誤

程序示例

public class FirstCode1 {
   public static void main(String[] args) {
       //檢驗字符串是否為空
       String a1 = "";
       if(a1.length() == 0){
           System.out.println("a1是空串");
      }else {
           System.out.println("a1不是空串");
      }
       if(a1.equals("")){
           System.out.println("a1是空串");
      }else {
           System.out.println("a1不是空串");
      }
       //檢驗字符串是否為null
       String b1 = null;
       if (b1 == null){
           System.out.println("b1 = null");
      }else {
           System.out.println("b1 != null");
      }
       //檢驗字符串不為空且不為null
       String c1 = "Hello";
       if (c1 != null && c1.length() != 0){
           System.out.println("字符串c1既不是空串,也不是null");
      }else {
           System.out.println("字符串c1可能是空串,也可能是null");
      }
  }
}

運行結果

a1是空串
a1是空串
b1 = null
字符串c1既不是空串,也不是null

閱讀聯機API文檔

可以從Oracle上下載API文檔,並保存在本地。

也可以在瀏覽器上訪問:http://docs.oracle.com/javase/9/docs/api

構建字符串

有時候需要有較短的字符串拼接成較長的字符串,當數據較多的時候,使用+的效率就有點低了,每次拼接字符串都既浪費空間,又浪費時間。


如果需要用許多小段字符串來構建一個字符串,那么應該按照下列步驟進行

  1. 構建一個空的字符串構建器:

    StringBuilder builder = new StringBuilder();
  2. 每次需要添加一部分內容時,就調用append方法

    builder.append(ch);
  3. 在字符串構建完成時,調用toString方法,接可以得到一個String字符串,其中包含了構建其中的

    String buder = builder.toString();

注釋

StringBuilder類在Java5中引入,這個類的前身是StringBuffer,它的效率稍微有些低,但是允許采用多線程的方式添加或刪除字符串。如果所有字符串編輯操作都在單個線程中執行(通常是這樣),則應該使用StringBuilder

程序示例

public class FirstCode1 {
   public static void main(String[] args) {
       StringBuilder builder = new StringBuilder();

       builder.append("He");
       builder.append("llo");
       builder.append(",Wor");
       builder.append("ld!");

       String b1 = builder.toString();
       System.out.println(b1);
  }
}

運行結果

Hello,World!




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM