string、stringbuffer與stringbulder區別

 

一、  字符串是一個特殊的對象,它一旦被初始化,就不能夠被改變,不能有子類,因此String中的方法都不能被複寫;數組

二、  字符串有兩種賦值方式多線程

1)  String s1 = 「abc」;  ——在內存中只有一個對對象。app

2)  String s2 = new String(「abc」);——在內存中有兩個對象,」abc」是一個對象,new又建立了一個對象。函數

三、  equals方法post

Object中的equals方法是用於比較兩個對象的地址的,String類中重寫了該方法,使得其比較的是具體的對象的值。ui

 

 

第二講字符串經常使用功能編碼

一、  字符串在內存中的特性線程

               

二、  操做字符串的方法3d

2.1 讀取方法orm

l  int length()——獲取字符串長度;

l  char charAt(int index)——根據位置獲取位置上某個字符;

l  int indexOf(int ch)——返回ch在字符串中第一次出現的位置;

l  int indexOf(int ch,int fromIndex)——從fromIndex指定位置開始,獲取ch在字符串中第一次出現的位置;

l  int indexOf(String str)——返回str在字符串中第一次出現的位置;

l  int indexOf(String str,int fromIndex)——從fromIndex指定位置開始查找,返回str在字符竄中第一次出現的位置;

l  int lastIndexOf(int ch)——返回ch自字符串中最後一次出現的位置

2.2   判斷操做

l  boolean contains(str)——判斷字符串中是否包含str;

l  boolean isEmpty();——判斷字符串中是否有內容。其原理是判斷字符串長度是否爲0;

l  Boolean startsWith(str)——判斷字符串是否以str開頭。

l  Boolean endsWith(str)——判斷字符串是否以str結尾。

l  Boolean equals(str)——判斷字符串內容是否相同。Object類中的equals方法。

l  Boolean equalsIgnoreCase(str)——判斷內容是否相同,而且忽略了大小寫。

2.3   字符串與其餘數據類型互相轉換

l  將字符串轉成字符串:

方法一:構造函數方法

String(char[] ch )

String(char[] ch,int offset,int count)——將字符串數組中的一部分轉成字符串。

                             方法二:靜態方法

                                               Static String copyValueOf(char[] ch)

                                               Static String copyValueOf(char[] , int offset, int count)

l  將字符串轉成字符數組

Char[]  toCharArray();

l  將字節數組轉成字符串——構造函數方法實現

String(byte[] b);

String(byte[] b,int offset , int count)

l  將字符串轉成字節數組

Byte[]  getBytes();

特殊狀況:字符串和字節數據在轉換過程當中,能夠指定編碼表。

l  將基本數據類型轉成字符串

Static String valueOf(int i)——將int類型數據轉成字符串

Static String valueOf(double d)——將double型數據轉成字符串

 

2.4   替換字符串中的某個字符

String replace(oldchar , newchar).

2.5   根據指定字符將字符串切割成多個字符串

String[] split(regex);

2.6   獲取字符串中的一部分

String substring(begin)——獲取字符串中從begin之後的全部字符。

String substring(begin , end)——獲取字符串中從begin(包含)開始到end(不包含)之間的字符。

2.7   大小寫轉換,去除空格,字符串天然順序比較

l  大小寫轉換

String toUpperCase()——將字符串轉成大寫;

String toLowerCase()——將字符串轉成小寫;

l  將字符串兩端的多個空格去除

    String trim();

l  對兩個字符串進行天然順序比較

    Int compareTo(String);——字符串重寫了Comparable接口中的compareTo方法。

練習:

一、  模擬一個trim方法,去除字符串兩端的空格

思路:

1)判斷字符串的第一個位置是否爲空,若是是繼續向下判斷,直到不是空格爲止;結尾處的空格判斷也是如此。

2)當開始和結尾都判斷到不是空格了,將先後兩處之間的字符取出來,達到去除字符串兩端空格的目的。

代碼實現以下: 

二、  將一個字符串進行翻轉。將字符串中指定部分進行翻轉

三、  獲取一個字符串在另外一個祖父串中出現的次數

四、  獲取兩個字符串中最大相同字符串。

第三講 StringBuffer

一、  概述

StringBuffer是一個容器,咱們能夠對容器中的數據進行增、刪、改、查。當數據類型和數據個數不肯定時,並且最終要變成字符串的時候,就能夠用字符串緩衝區。

二、  特色

1)  長度能夠變化;

2)  能夠直接操做多個數據類型;

3)  最終會經過toString方法變成字符串;

三、  功能

1)  存儲

StringBuffer append()——將指定數據做爲參數添加到已有數據結尾處

StringBuffer insert(index,數據)——將數據插入到指定的位置(index);

2)  刪除

StringBuffer delete(int start,int end)——刪除緩衝區中的數據,包含start,不包含end;

StringBuffer deleteCharAt(index)——刪除指定位置的字符

3)  獲取

Char charAt(int index);——返回指定位置處的字符

Int indexOf(String str)——查找字符串str在容器中第一次出現的位置

Int lastIndexOf(String str)——查找字符串str在容器中最後一次出現的位置

Int length()——獲取容器的長度

String substring(int start, int end)——獲取緩衝區中從start(包含)到end(不包含)的數據。

4)  修改

StringBuffer repace(start,end,String)——利用string替換容器中從start(包含)到end(不包含)的數據。

Void setCharAt(int index, char ch)——將緩衝區中index位置處的數據替換成ch。

5)  反轉

StringBuffer reverse();

 

 

四、  StringBulder與StringBuffer

StringBulder是jdk1.5版本以後纔出現的,爲了提升單線程運行效率。它與StringBuffer的區別以下:

1)  StringBuffer是線程同步的,即,多線程調用時,對緩衝區中數據的操做代碼是同步的;而StringBulder是不一樣步的。

2)  StringBulder不須要判斷鎖(由於不一樣步),提升了運行效率,在單線程下建議使用StringBulder,多線程下建議使用StringBuffer。

總結

一、String和StringBuffer區別

1)String和StringBuffer都有對字符串進行增刪改查等操做;

2)String長度和內容都不可變,StringBuffer長度和內容均可變;

3)StringBuffer有反轉功能;

二、StringBuffer和StringBuilder的主要區別

         1)StringBuffer線程同步,StringBuilder線程不一樣步;

         2)StringBuffer效率較低,StringBuilder效率較高;

         3)多線程時使用StringBuffer,單線程時使用StringBuilder;

相關文章
相關標籤/搜索