java基礎4:String與StringBuffer及基礎資料型別 (Elementary Data Type)封裝類

來源:互聯網
上載者:User

標籤:javase   string   stringbuffer   


關於Java基礎的文章,我覺得寫得還可以,以前發在了我其它的部落格了,肯定是原創,現在再分享給大家出來。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


    java中一些基礎類比如String、StringBuffer和基礎資料型別 (Elementary Data Type)封裝類都是非常常見且使用非常頻繁的類。這些類雖然簡單,但是想要熟練使用也必須要學習,雖然API文檔對這些類的用法都講的比較詳細,但是我覺得還是有必要再整理一下。

 一、String類

 

1、概述

  String就是字串的意思,首先要明確一點的是String並不屬於基礎資料型別 (Elementary Data Type)。

  因為對象的預設值是null,所以String的預設值也是null;但它又是一種特殊的對象,有其它對象沒有的一些特性。

  注意new String() 和 newString("")都是聲明一個空的字串而不是null。

  字串一旦被初始化就不可以被改變。

 

2、初始化

  對象初始化格式String s = new String("abc"); 

   ----可以簡寫為String  s = "abc";

 

3、字串常量池

講之前首先我們先來看一個例子

 

//例1      String s1 = “abc";      String s2 = "abc";      String s3 = "a" + "bc";      System.out.println(s1 == s2); // true      System.out.println(s1 == s3);// true //例2    String s1 = new String("abc");     String s2 = new String("abc");    String s3 = "a" + new String("bc");    System.out.println(s1==s2);        //false    System.out.println(s2==s3);        //false 

  運行這個2個例子的結果,我們會驚奇的發現例1和例2啟動並執行結果竟然不同。上面不是說用new和不用new是一樣的嗎?

這裡我們就要引入常量池的概念:常量池(constant pool)指的是在編譯期被確定,並被儲存在已編譯的.class檔案中的一些資料。它包括了關於類、方法、介面等中的常量,也包括字串常量。

  Java會確保一個字串常量只有一個拷貝。

  因為例子中的s1和s2中的”abc”都是字串常量,它們在編譯期就被確定了,所以s1==s2為true;

  用new String() 建立的字串不是常量,不能在編譯期就確定,所以new String() 建立的字串不放入常量池中,它們有自己的地址空間。

4、常用方法

 4.1、擷取:

   4.1.1 擷取字串中字元的個數(長度).

    int length();

 

 4.1.2 根據位置擷取字元。

    char charAt(int index);

 

 4.1.3 根據字元擷取在字串中的第一次出現的位置.

    int indexOf(int ch) ch為字元的Unicode編碼

    int indexOf(int ch,int fromIndex) 從指定位置進行ch的尋找第一次出現位置

    int indexOf(String str)根據字串擷取在字串中的第一次出現的位置.

    int indexOf(String str,int fromIndex)從fromIndex指定位置開始,擷取str在字串中出現的位置.

 

 4.1.31反向索引,從後向前尋找

    int lastIndexOf(int ch)

    int lastIndexOf(int ch,int fromIndex):從指定位置進行ch的尋找第一次出現位置

    int lastIndexOf(String str);

    int lastIndexOf(String str,int fromIndex);

 

 4.1.4 擷取字串子串。

    String substring(int beginIndex, int endIndex)//包含begin 不包含end 。

    String substring(int beginIndex);//從beiginIndex索引開始截取字串。

 

 4.2、轉換

    4.2.1 將字串變成字串數組

    String[]  split(String regex):涉及到Regex.

 

  4.2.2 將字串變成字元數組。

    char[] toCharArray();

 

  4.2.3 將字串變成位元組數組。

    byte[] getBytes();

 

  4.2.4 將字串中的字母轉成大小寫。

    String toUpperCase():大寫

    String toLowerCase():小寫

 

 4.2.5將字串中的內容進行替換

   String replace(char oldch,char newch);

    String replace(String s1,String s2);

 

  2.6 將字串兩端的空格去除。

    String trim();

 

  2.7 將字串進行串連 。

    String concat(string);

 

 4.3、判斷比較

  4.3.1 兩個字串內容是否相同啊?

    boolean equals(Object obj);

    boolean equalsIgnoreCase(string str);忽略大寫比較字串內容。

  4.3.2 字串中是否包含指定字串?

    boolean contains(string str);

  4.3.3 字串是否以指定字串開頭。是否以指定字串結尾。

    boolean startsWith(string);

    boolean endsWith(string);

 二、StringBuffer類

 

1、概述

  StringBuffer類和String一樣,也用來代表字串,只是由於StringBuffer的內部實現方式和String不同,所以StringBuffer在進行字串處理時,不產生新的對象,在記憶體使用量上要優於String類。

所以在實際使用時,如果經常需要對一個字串進行修改,例如插入、刪除等操作,使用StringBuffer要更加適合一些。

在StringBuffer類中存在很多和String類一樣的方法,這些方法在功能上和String類中的功能是完全一樣的。

但是有一個最顯著的區別在於,對於StringBuffer對象的每次修改都會改變對象自身,這點是和String類最大的區別。

 

2、StirngBuffer初始化

  StringBuffer對象的初始化不像String類的初始化一樣,Java提供的有特殊的文法,而通常情況下一般使用構造方法進行初始化。

 

3、特點  

   a、長度的可變的。    

   b、可以儲存不同類型資料。    

   c、最終要轉成字串進行使用。   

  d、可以對字串進行修改。

 

4、常用方法

4.1添加:

   StringBuffer append(data);//能夠添加各種資料類型

   StringBuffer insert(index,data); //在索引出插入各種類型

4.2刪除:

   StringBuffer delete(start,end):包含頭,不包含尾。

   StringBuffer deleteCharAt(int index):刪除指定位置的元素

4.3尋找:

    char charAt(index); //在該索引出的char值

  int codePointAt //索引處的字元

    int indexOf(string); //

    int lastIndexOf(string);

  int capacity() //返回當前Buffer的容量(初始16)

  int length()  //長度

4.4修改:

      StringBuffer replace(start,end,string);

   void setCharAt(index,char);

  StringBuffer reverse() 將此字元序列用其反轉形式取代(String類中沒有反轉)  

  void trimToSize()  嘗試減少用於字元序列的儲存空間。

 

5、StringBuilder

 jdk1.5以後出現了功能和StringBuffer一模一樣的對象。就是StringBuilder

 這裡就不詳細介紹了。注意一下它們的不同點就好了。

 不同的是:

 StringBuffer是線程同步的。通常用於多線程。

 StringBuilder是線程不同步的。通常用於單線程。 它的出現提高效率。

 

 三、基礎資料型別 (Elementary Data Type)封裝類

 

 1、概述

Java語言是一個物件導向的語言,但是Java中的基礎資料型別 (Elementary Data Type)卻是不物件導向的,這在實際使用時存在很多的不便,為瞭解決這個不足,在設計類時為每個基礎資料型別 (Elementary Data Type)設計了一個對應的類進行代表,這樣八個和基礎資料型別 (Elementary Data Type)對應的類統稱為封裝類。

 2、對應關係

byte ——Byte

short ——Short

int ——Integer

long-----Long

float-----Float

double----Double

char----Character

boolean---Boolean

3、Integer類內部的常用方法

     事實上這幾種資料類型封裝內是比較相似,我只以Integer為例簡單介紹一下。

    a、parseInt方法

        //將數字字串轉換為int數值。         String s = “123”;         int n = Integer.parseInt(s);

         //將字串”120”按照十進位轉換為int,則結果為120          int n = Integer.parseInt(“120”,10);

         //將字串”12”按照十六進位轉換為int,則結果為18          int n = Integer.parseInt(“12”,16);

         //將字串”ff”按照十六進位轉換為int,則結果為255          int n = Integer.parseInt(“ff”,16);    

 

    b、int轉字串

  可以直接用+號串連,也可以用toString函數。

   //將int類型轉換為對應的String類型。     int m = 1000;     String s = Integer.toString(m);

 c、十進位轉成其他進位。

         toBinaryString();

         toHexString();

         toOctalString();

 四、最後

 

 即使是簡單的東西,我們也要把它重視起來,堅持每天進步一點點,最後我們就是成功的。

java基礎4:String與StringBuffer及基礎資料型別 (Elementary Data Type)封裝類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.