Java基礎-3.Object、String、StringBuffer、StringBuilder

一、Object

1.Object類概述

類層次結構的根類,所有類都直接或者間接的繼承自該類。

2.構造方法

public Object()    子類的構造方法默認訪問的是父類的無參構造方法

3.public native int hashCode();

不同對象的hashCode()一般來說不會相同。同一個對象的hashCode()值肯定相同。

4.getClass()

public final Class getClass()

返回此對象的運行時類。

可以通過Class類中的getName()方法,獲取對象的全路徑名稱。

5.public String toString()

返回該對象的字符串表示,底層代碼如下如下,該值無意義,所以要在創建對象時重寫toString

getClass().getName() + "@" + Integer.toHexString(hashCode())

6.Object類的equals()

指示其他某個對象是否與此對象“相等”。默認情況下比較的是對象的引用是否相同。

public boolean equals(Object obj) {

         return (this == obj);

}

由於比較對象的引用沒有意義,一般建議重寫該方法。要注意這裏重寫的是父類的equals方法,多態的弊端是不能訪問子類特有的屬性,需要向下轉型,即需要將object類轉換成需要的子類。

7.==和equals

==是一個比較運算符號,既可以比較基本數據類型,也可以比較引用數據類型,基本數據類型比較的是值,引用數據類型比較的是地址值。

equals方法是一個方法,只能比較引用數據類型,所有的對象都會繼承Object類中的方法,如果沒有重寫Object類中的equals方法,equals方法和==號比較引用數據類型無區別,重寫後的equals方法比較的是對象中的屬性。

二、scanner

Scanner sc = new Scanner(System.in);

int i = sc.nextInt();

String s = sc.nextLine();

System.out.println(i+" "+s);

輸入int數後,回車其實是+”\r\n”,所以string數據就判斷已經結束,導致s沒有輸入。

解決方法:

1)創建兩個scanner對象,這種方法浪費資源,不推薦

2)把所有的數據,按照string類獲取,之後再轉換。

三、String

1.string構造方法

public String() 空構造

public String(byte[] bytes) 字節數組轉爲字符串,字節數組爲數字,會轉換爲對應的字符

public String(byte[] bytes,int index,int length) 字節數組一部分轉爲字符串

public String(char[] value) 把字符數組轉爲字符串

public String(char[] value,int index,int count) 把字符數組的一部分轉爲字符串

public String(String oringal) 把字符串常量轉爲字符串

面試題

String s1 = new String(“abc”); 共創建兩個對象,1個在常量池中,1個在堆內存中。

String s1 = new String(“abc”); String s2=”abc”; s1!=s2,因爲一個在堆內存,一個在常量池中。

String s1 = “a”+”b”+”c”;和s2=”abc”;s1==s2,因爲java的常量優化機制。

String s1="ab";String s2="abc";String s3=s1+"c"; s2!=s3,因爲s2在常量池,而s3在堆內存。

2.string的判斷功能

boolean equals(Object obj) 比較字符串的內容是否相同,區分大小寫

boolean equalsIgnoreCase(String str) 比較字符串的內容是否相同,不區分大小寫

boolean contains(String str) 判斷字符串是否包含小字符串

boolean startWith(String str) 判斷字符串是否以某個指定的字符串開頭

boolean endsWith(String str) 判斷字符串是否以某個指定的字符串結尾

boolean isEmpty() 判斷是否爲空

3.string的獲取功能

int length() 獲取長度

char charAt(int index) 返回指定位置的字符

int indexOf(int ch) 返回指定字符第一次出現的位置,參數可以爲字符串,或者單個字符

int indexOf(String str,int fromIndex) 返回指定字符串在此字符串中從指定位置後第一次出現的索引

如果index改爲lastIndexOf則爲從後向前。

substring(int start) 截取字符串

4.string的轉換功能

byte[] getBytes 把字符串轉爲字節數組

char[] toCharArray() 把字符串轉爲字符數組

static String valueOf(char[] chs) 把字符數組轉字符串

static String valueOf(int i) 把int數組轉爲字符串: String.valueOf(100)

static String valueOf(對象) 調用的是對象的toString方法

String concat(String str) 字符串拼接

5.string的替換功能

String replace(char old, char new)

String replace(String old, String new)

Sring trim() 去除字符串兩端的空格

四、StringBuffer

線程安全的可變字符序列

1.StringBuffer和String的區別

String是一個不可變的字符序列。

StringBuffer是一個可變的字符序列,但是不能像string那樣用“+”,需要使用append等方法。

2.StringBuffer構造方法

public StringBuffer():無參構造方法

public StringBuffer(int capacity):指定容量的字符串緩衝區對象,默認16

public StringBuffer(String str):指定字符串內容的字符串緩衝區對象

3.StringBuffer方法

public int capacity():返回當前容量。

public int length():返回長度(字符數),字符的實際值長度,而非容量

4.添加功能

public StringBuffer append(String str):可以把任意類型數據添加到字符串緩衝區裏面,並返回字符串緩衝區本身。

public StringBuffer insert(int offset,String str):在指定位置把任意類型的數據插入到字符串緩衝區裏面,並返回字符串緩衝區本身。

5.刪除功能

public StringBuffer deleteCharAt(int index):刪除指定位置的字符,並返回本身

public StringBuffer delete(int start,int end):刪除從指定位置開始指定位置結束的內容,並返回本身

6.替換和反轉功能

public StringBuffer replace(int start,int end,String str):替換

public StringBuffer reverse():字符串反轉

7.截取功能

public String substring(int start):從指定位置截取到末尾

public String substring(int start,int end):截取從指定位置開始到結束位置,包括開始位置,不包括結束位置

8.StringBuffer和String相互轉換

String -- StringBuffer

通過構造方法

通過append()方法,即append內部的字符串轉換成了stringbuffer

StringBuffer -- String

通過構造方法

通過toString()方法

通過subString(0,length)

9.StringBuilder

StringBuffer和StringBuilder的區別

StringBuffer是jdk1.0版本的,是線程安全的,效率低,StringBuilder是jdk1.5版本的,是線程不安全的,效率高

String和StringBuffer,StringBuilder的區別

String是一個不可變的字符序列,StringBuffer,StringBuilder是可變的字符序列

六、Arrays

1.Arrays類概述

針對數組進行操作的工具類,提供了排序,查找等功能。

2.成員方法

public static String toString(int[] a) 將int數組轉換成字符串

public static void sort(int[] a) 將int數組進行排序

public static int binarySearch(int[] a,int key) 二分查找key

七、基本包裝類

可以在對象中定義更多的功能操作該數據。常用於基本數據類型與字符串之間的轉換。

基本類型和包裝類的對應

byte        Byte

short       Short

int            Integer

long          Long

float          Float

double      Double

char          Character

boolean     Boolean

1.Integer

該類中提供了多個方法,可以使int和String互相轉換

構造方法

public Integer(int value)

public Integer(String s)

int和string互相轉換

int --- String

和""進行拼接,推薦使用

public static String valueOf(int i),推薦使用

int--Integer--調用Integer的toString方法

String -- int

public static int parseInt(String s)

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