1. 程式人生 > 實用技巧 >Java常用API(String類)

Java常用API(String類)

Java常用API(String類)

概述:

java.lang.String 類代表字串。Java程式中所有的字串文字(例如 "abc" )都可以被看作是實現此類的例項
1. 字串不變:字串的值在建立後不能被更改
String s1 = "abc"; 
s1 += "d"; 
System.out.println(s1); 
// "abcd" 
// 記憶體中有"abc","abcd"兩個物件,s1從指向"abc",改變指向,指向了"abcd"。

這裡我們就通過一個記憶體圖來更好的向大家解釋

首先我們來寫一段簡單的程式碼,然後畫出該程式碼的記憶體圖來幫助大家理解

 1 public class
Test { 2 public static void main(String[] args) { 3 String str1="123"; 4 String str2="123"; 5 String str3=new String("123"); 6 System.out.println(str1==str2);//true 7 System.out.println(str1==str3);//false 8 System.out.println(str2==str3);//false 9 }
10 }

首先我給大家引入一個字串常量池的概念

什麼是字串常量池呢,如上圖

String str1=="123"

String str2=="123"

這樣子命名的字串的值就會被存入字串常量池,而String str3=new String("123")這樣new 出來的則不會

顧str1==str3的值為false,而str1==str2的結果則為true,下面通過一張圖帶大家更加深刻的去理解

當使用String str1="XXXXX"格式命名的時候,會先去字串常量池中找,如果沒有再建立,這樣極大的

減小了記憶體的浪費

下面我來介紹幾個String類的常用方法

1判斷字串內容是否相等的方法

public boolead equals(Object anObject)

2忽略大小寫判斷字串內容是否相同的方法

public boolean equalsIgnoreCase (String anotherString)
 1 public class Test {
 2     public static void main(String[] args) {
 3        String str1="abc";
 4        String str2="abc";
 5        String str3="ABC";
 6         System.out.println(str1.equals(str2));//true
 7         System.out.println(str1.equals(str3));//false
 8         System.out.println(str1.equalsIgnoreCase(str3));
 9 
10     }
11 }

獲取功能的方法

public int length() 返回字串長度

public String concat (String string) 將指定字串連線到該字串末尾

public char charat(int index) 返回指定索引處的char值

public int indexOf(String str) 返回指定字串第一次出現的地方

public String substring (int beginIndex) 剪取字串,字串的範圍為從begin到末尾

 1 package cn.itcast;
 2 
 3 public class Test {
 4     public static void main(String[] args) {
 5        String str1="abc";
 6        String str2="abc";
 7         System.out.println("字串長度是:"+str1.length());
 8         String concat = str1.concat(str2);
 9         System.out.println("連線後的字串:"+concat);
10         System.out.println("第一個字母:"+str1.charAt(0));
11         System.out.println("b第一次出現地方的索引:"+str1.indexOf("b"));
12         String substring = str1.substring(1);
13         System.out.println("擷取後的字串:"+substring);
14     }
15 }

結果

轉換功能的方法

public char[] toCharArray() 將字串轉換為陣列

public byte[] getbytes() 將字串轉換為新的位元組陣列

public String replace(CharSequence target,CharSequence replace) 替換字串中的指定字元

 1 public class Test {
 2     public static void main(String[] args) {
 3        String str1="abc";
 4        char[] chars = str1.toCharArray();
 5        byte[] bytes = str1.getBytes();
 6         System.out.println("轉換為陣列:");
 7         for (int i = 0; i < chars.length; i++) {
 8             System.out.print(chars[i]+",");
 9         }
10         System.out.println();
11         System.out.println("轉換為位元組陣列:");
12         for (int i = 0; i < bytes.length; i++) {
13             System.out.print(bytes[i]+",");
14         }
15         System.out.println();
16         String replace = str1.replace("a", "A");
17         System.out.println("替換後的字串:"+replace);
18     }
19 }

結果

分割方法

public String[] split(String regex)將字串按照指定的分隔符分隔成陣列

package cn.itcast;

import com.alibaba.druid.sql.visitor.SQLASTOutputVisitorUtils;

public class Test {
    public static void main(String[] args) {
       String str1="aa,bb,cc";
        String[] split = str1.split(",");
        System.out.println("以逗號分隔:");
        for (int i = 0; i < split.length; i++) {
            System.out.println(split[i]);
        }

    }
}

結果

以上就是有關字串的一些基本知識,如果有錯誤還請各位批評指正