Java--常用類的應用(Object類、String類)

Objec類(祖宗類)

Object類是一個特殊的類,是所有類的父類,如果一個類沒有用extends明確指出繼承於某個類,那麼它默認繼承Object類。這裏主要總結Object類中的三個常用方法:toString()、equals()、hashCode()。

==與equals區別

  1. ==號在比較基本數據類型時比較的是值,而用equals號比較兩個對象時比較的是兩個對象的地址
  2. equals()方法存在於Object類中,因爲Object類是所有類的直接或間接父類,也就是說所有的類中的equals()方法都繼承自Object類,如果沒有重寫equals的算法,則==和equals無區別

String類

public static void main(String[] args) {

			String dada ="0123456789";
	
	//1、求字符串長度
	System.out.println(dada.length());
	System.out.println("--------------------");

	//2、求字符串某一位置字符
	System.out.println(dada.charAt(0));
	System.out.println(dada.charAt(1));
	System.out.println("--------------------");
	
	//3、提取子串
	System.out.println(dada.substring(0,5));
	System.out.println("--------------------");
	
	//4、字符串連接
	String dada2="abc";
	System.out.println(dada.concat(dada2));
	System.out.println("--------------------");
	
	//5、字符串中單個字符查找
	System.out.println(dada.indexOf("2"));
	System.out.println(dada.indexOf(2));//若沒有出現則返回-1。
	System.out.println("--------------------");
	
	//6、字符串中字符的大小寫轉換
	String a="abcd";
	String A="ABCD";
	System.out.println(A.toLowerCase());//小寫轉換
	System.out.println(a.toUpperCase());//大寫轉換
	System.out.println("--------------------");
	
}

String的正則表達式

關鍵字:matches,返回是一個布爾值
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
案例:判斷電話號碼的營運商
例如:139是移動、155是聯通、133是電信

/**
 * 案例:判斷電話號碼的營運商
 * 
 * 例如:139是移動、155是聯通、133是電信
 */

public static void main(String[] args) {
	Scanner sc =new Scanner(System.in);
	System.out.println("請輸入手機號碼");
	String num=sc.next();
	boolean a =num.matches("139\\d{8}");
	boolean b =num.matches("155\\d{8}");
	boolean c =num.matches("133\\d{8}");
	if(a) {
		System.out.println("此號碼是中國移動");
	}else if(b) {
		System.out.println("此號碼是中國聯通");
	}else if(c) {
		System.out.println("此號碼是中國電信");
	}else {
		System.out.println("此號碼不存在");
	}
	
}

在這裏插入圖片描述

StringBuffer

StringBuffer是字符串緩衝區,當new的時候是在堆內存創建了一個對象,底層是一個長度爲16的字符數組,當調用添加的方法時,不會再重新創建對象,而是不斷向原緩衝區添加字符
StringBuffer類中重寫了toString方法,顯示的是對象中的屬性值
案例應用:

/**
	 * StringBuffer應用
	 * @param args
	 */
	public static void main(String[] args) {
		
		//append,把任意數據類型添加到字符串緩衝區裏面,並返回字符串緩衝區本身
		String str ="0123456789";
		StringBuffer sb =new StringBuffer().append(str);//將str放進StringBuffer中
		System.out.println(sb);
		System.out.println("-------------");
		
		//insert,在指定位置把任意類型的數據插入到字符串緩衝區裏面,並返回字符緩衝區本身
		sb.insert(1, "abc");
		System.out.println(sb);
		System.out.println("--------------");
		
		//StringBuffer的刪除功能:
		sb.delete(1, 3);//範圍不包括3
		System.out.println(sb);
		System.out.println("--------------");
		
		//StringBuffer轉換String
		String ss =sb.toString();
		System.out.println(ss);
	}

String與StringBuffer的區別

java 中String和StringBuffer與StringBuilder的區別及使用方法

  1. String 類
     String的值是不可變的,這就導致每次對String的操作都會生成新的String對象,不僅效率低下,而且大量浪費有限的內存空間。
    String a = “a”; //假設a指向地址0x0001
    a = “b”;//重新賦值後a指向地址0x0002,但0x0001地址中保存的"a"依舊存在,但已經不再是a所指向的,a 已經指向了其它地址。
    因此String的操作都是改變賦值地址而不是改變值操作。
  2. StringBuffer
    是可變類,和線程安全的字符串操作類,任何對它指向的字符串的操作都不會產生新的對象。 每個StringBuffer對象都有一定的緩衝區容量,當字符串大小沒有超過容量時,不會分配新的容量,當字符串大小超過容量時,會自動增加容量。
  3. StringBuilder
    的使用方法跟StringBuffer類似,但其是非線程安全的,因此一般常用於單線程,效率比StringBuffer高。

StringBuffer和StringBuilder類功能基本相似,主要區別在於StringBuffer類的方法是多線程、安全的,而StringBuilder不是線程安全的,相比而言,StringBuilder類會略微快一點。對於經常要改變值的字符串應該使用StringBuffer和StringBuilder類。
1)首先String、StringBuffer、StringBuilder在JDK中都被定義爲final類,這意味着他們不可以被繼承。
2)String最常見,與StringBuffer相比,String的性能較差,因爲對String類型進行改變的時候都會重新生成一個新的String對象,這在字符串拼接操作時很明顯,因此內容經常改變的字符串不應該使用String,如果不考慮多線程,則應使用StringBuilder。
綜上所述,選擇哪個,需要從內存性能、線程安全、執行效率等多方面考慮

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章