Java中String類必備知識總結

1. == 和 equals 方法的區別 ,這是面試必問的問題

"=="比較的是引用(是否指向同一個內存塊),“equals”比較的是具體的內容

String name1="張三"        //直接賦值方式

String name2=new String("張三");   //new對象方式

String name3=name2  ;           //傳遞引用

name1==name2    false

name1==name3    false

name2==name3     true       

name1.equals(name2)    true

name1.equals(name3)     true

name2.equals(name3)    true

原理:由於常量池不存在兩個相同的對象,所以name2和name3都指向JVM字符串常量池中"張三" 對象。

          而new關鍵字一定會產生一個對象,並且這個對象是存放在堆中的,所以String name2=new String("張三");

          產生兩個對象,保存在棧中的name2和保存在堆中的張三,

注意事項: object 的equals方法容易拋空指針異常,應該是用常量或是確定有值的對象調用equals

2.String 兩種實列化方式區別

直接賦值方式:創建的對象放在字符串對象池裏,如果存在就不創建

new對象方式:每次都創建新的對象

String實例的值是通過字符數組實現字符串存儲的。

3.字符串特性:

不能改變字符串的內容,要想改變,只能通過指向一個新的內存地址。因爲在源碼中其是非final修飾的,意味着其不能

被繼承,並且其成員value也是final,因此字符串一旦創立就不能修改。

4.String常見的方法:

4.1   charAt :返回指定索引處的char值,索引範圍爲0-----length()-1

     String name="張三"

      char  ming =name.charAt(1)

4.2 length():返回字符串的長度

4.3  indexof:返回指定字符串在此字符串中第一次出現的處的索引

  String str="sadasd";

  str.indexof("d");

4.4  substring(int beginIndex    int endIndex)

返回一個新字符串,該字符串從指定的beginIndex處開始,直達索引endIndex -1處的字符,其長度爲endIndex-beginIndex

包含起始字符,不包含結束字符

String str1="不開心每一天,不可能"

str.substring(1,6)

結果:開心每一天

4.5 toUpperCase() :全變成大寫

      tolowercase():   全變成小寫

4.6  Trim():去掉字符串前後空格

5."+"連接符解析

其原理是通過StringBuilder以及append方法實現的,在實際代碼編程中,使用+和使用StringBuilder以及append方法

來拼接字符串對象是等價的。

注意:如果大量StringBuilder創建在堆內存中,必然會造成效率的損失,所以這種情況下建議在循環體外創建

一個StringBuilder對象調用append方法手動拼接

6 問題 題統計newStr中出現的英文字符   空格 其他的個數

    String   str ="asdaf    ddcxzcsd2312”

    int kongge=0

    int yingwen=0

    int qita=0;

    for(int i=0; i<newStr.length();i++){

    char  c=newStr.charAt(i);

    if(( c>= ‘a’&&c<'z‘)||( c>= ‘A’&&c<'Z‘){ 

        yingwen++}

        else if(c==  ‘’  ”){

        kongge++

        } else{

       qita++

       }

       }

 

 

 

 

 

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