Java新人之路 -- String類

Spike Bo發表於2020-11-13

String類

1. String類的簡述

String類位於java.lang包下,是Java語言的核心類,提供了字串的比較、查詢、擷取、大小寫轉換等操作

要點1. String是final修飾的,所以是最終類,最終類是不能被繼承的,既然不能被繼承也就意味著裡面的方法不能被重寫。其成員方法也是如此

要點2. **字串常量池:**字串是常量,所有的字串常量都是儲存在常量池中的,每個常量在常量池中都有地址;在常量池中,如果定義的常量在常量池中已經存在,則不會再進行建立,而是直接拿來用,如果不存在就建立一個常量扔進常量池

要點3. 字串物件的建立 1、字串本身是引用資料型別,可以通過new關鍵字進行物件的建立 2、字串又比較特殊,它也可以直接賦值的形式進行字串物件的建立

上述的區別在哪裡呢? API中說明:字串都是常量 字串常量都在常量池(方法區)中儲存,是有自己的地址的,通過new關鍵字建立出來的物件在堆記憶體中

舉例說明

在這裡插入圖片描述

注意點: ==和equals的區別 ?

==用於基本資料型別時比較的是值,用於引用資料型別比較的時地址;

equals在字串中是先比較地址後比較內容

public static void method2() {
	String str = new String("new的字串物件");
	String str2 = new String("new的字串物件");
	System.out.println(str == str2);// false  因為是兩個物件,地址不同
	String str3 = "直接賦值的字串物件";
	String str4 = "直接賦值的字串物件";
	System.out.println(str3 == str4);// true 因為"直接賦值的字串物件"在常量池中被str3建立,然後直接被str4拿走了地址,在常量池中是同一個常量
	

	String str5 = "hello";
	String str6 = "world";
	String str7 = "helloworld";
	String str8 = str5 + str6;// 對已經建立好的物件進行了拼接
	System.out.println(str7 == str8);// false str8是兩個物件的拼接,str7是一個物件
	System.out.println(str7.equals(str8));// true  equals在字串中是先比較地址後比較內容
	

	String str0 = "a" + "b" + "c";// 先拼接再建立物件所以str0實際還是等於"abc"
	String str01 = "abc";
	System.out.println(str0 == str01);// true  值相同
	System.out.println(str0.equals(str01));// true

}

2. String類的常用方法

/**
 * String中由於且常用的方法
 */
    public static void Method2() {
    // replace() 替換
    	String url = "http://www.news.baidu.com";
    	String newUrl = url.replace("baidu", "jd");
    	System.out.println(newUrl);//輸出http://www.news.jd.com

	String mum = "一二3三3四五3六七3八"; 
	// substring() 擷取 如果只有一個引數,代表開始,直到末尾結束
	System.out.println(mum.substring(5));//輸出   四五3六七3八
	// substring() 擷取 如果有兩個引數,引數一代表開始,引數二代表結束位置(不包含)
	System.out.println(mum.substring(3, 7));//輸出    三3四五
	// 注意角標從0開始,此處的3對應的是陣列的四
	System.out.println(mum.substring(4, mum.length()));//輸出   3四五3六七3八
	// spilt() 分割 引數代表要拆分的依據
	String[] urlArr = url.split("b");
	System.out.println(urlArr[urlArr.length - 1]);//輸出  aidu.com
	// 減號後的數字代表被引數劃分後的第幾部分,倒著數
	String[] mumArr = mum.split("3");
	System.out.println(mumArr[mumArr.length - 5]);//輸出  一二
}

3. String類的一般方法

/**
 * String中有用且不是很常用的方法
   */
   public static void Method3() {
   String str = "herbert bo";
   System.out.println("指定索引出的char值" + str.charAt(1));//輸出  指定索引出的char值e
   System.out.println("指定char值對應的索引:" + str.indexOf('b'));//輸出  指定char值對應的索引:3
   System.out.println("指定char值對應的索引:" + str.lastIndexOf('b'));//輸出  指定char值對應的索引:8

   String compare1 = "agc";
   String compare2 = "abc";
   // .compareTo對兩個字元進行對比,計算char值的差,從第一位開始,如果第一位有差就輸出差,第一位一樣就計算第二位
   System.out.println(compare2.compareTo(compare1));//輸出  -5, 因為compare2中的b比compare1中的g小5
   // .concat和拼接類似  
   System.out.println(compare2.concat(compare1));//輸出  abcagc
  
  // .contains
   System.out.println("是否包含指定的字串:" + str.contains("hello"));//輸出   是否包含指定的字串:false
   
   String url = "https://www.baidu.com";
   // 是否以指定的頭和尾
   System.out.println(url.endsWith("cn"));//輸出  false
   System.out.println(url.startsWith("http"));//輸出  true
 
   System.out.println("判斷字串是否為空字元:" + "".isEmpty());

}

相關文章