1. 程式人生 > >Java基礎——常用物件API(一)String類和StringBuffer類

Java基礎——常用物件API(一)String類和StringBuffer類

String

一、特點

  1. 字串是一個特殊的物件。
  2. 字串一旦初始化就不可被改變。

問:String str = "abc" 和 String str1 = new String("abc") 有什麼區別?

new出來的物件在堆記憶體中,產生兩個物件但都在堆記憶體中;

直接賦值物件在字串常量池中,由String類來維護,可以被共享。

 equals方法:就是比較兩個字串是否一樣

二、建構函式

1.String()

String s = new String(); 等效於 String s = "";但不等效於String s = null;

2.String(byte[] bytes)

將一個位元組陣列變成字串,但轉換成了ASCII碼。

3.String(char[] chars)

將一個字元陣列轉換成字串。

或者採用String(char[] chars, int offset, int length)//其中offset為偏移量,length字串長度。

三、方法

按照面向物件的思想對字串進行功能分類。

1.獲取

1.1.獲取字串長度.length(),

1.2.char charAt(int index),

1.3.int indexOf(char ch)第一次出現字元處的索引。

1.4.int indexOf(char ch, int fromIndex)

從指定位置進行ch的查詢第一次出現的索引

類似的還有搜尋String字串,以及lastIndexOf方法從後往前找

1.5.String substring(int beginIndex, int endIndex)獲取從哪到哪(endIndex-1)的子字串。、

2.轉換

2.1.將字串變成字串陣列(字串的切割)

String[] split(String regex):涉及到正則表示式.

簡單來說,","可以切,“.”不能切,得轉換成"\\."切。 

2.2.將字串變成字元陣列。

char[] toCharArray();

2.3.將字串變成位元組陣列。

byte[] getBytes();

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

String toUpperCase();大寫
String toLowerCase();小寫

2.5.將字串中的內容進行替換

String replace(char oldch,char newch);
String replace(String s1,String s2);

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

String trim();

2.7.將字串進行連線 。

String concat(string);

3.判斷

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

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

3.2.字串中是否包含指定字串?

boolean contains(string str);

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

boolean startsWith(string);
boolean endsWith(string);

3.4.比較,按字典順序比較兩個字串。

int compareTo(String str);//返回第一個不相同字元的Unicode差值

4.其他

String intern();

StringBuffer

一、概述

StringBuffer是字串緩衝區。用於儲存資料的容器。

1.特點:

  1. 長度不可變。
  2. 可以儲存不同的資料型別。
  3.  

二、功能

1.新增:

1.1.append

StringBuffer append(data);//data基本是任意資料型別
使用:
StringBuffer sb = new StringBuffer();
StringBuffrt s1 = sb.append(4);
System.out.println(sb);
System.out.println(s1);
System.out.println(sb==s1);
輸出:
4
4
true

1.2.insert

StringBuffer insert(int offset, Data data);
使用:
StringBuffer sb = new StringBuffer();
sb.append(123);
sb.insert(1, "haha");
System.out.println(sb);
輸出:
1haha23

2.刪除

StringBuffer delete(int start, int end);包含頭不包含尾
StringBuffer deleteCharAt(int index);刪除指定位置元素

清空緩衝區:

sb.delete(0, sb.length());

3.查詢

char charAt(int index);
int indexOf(String str);
int lastIndexOf(String str);

4.修改

StringBuffer replace(int begin, int end, String str);//包含頭不包含尾
void setCharAt(int index, char ch);

5.其他

5.1.setLength()

void setLength(int length);
使用:
StringBuffer sb = new StringBuffer("asd");
sb.setLength(2);
輸出:
as

5.2.reverse()反轉


StringBuilder

與StringBuffer一毛一樣,但不保證同步。從1.5開始使用。由於一模一樣,所以在一般情況下儘量使用StringBuilder以使速度更快

那麼StringBuffer和StringBuilder的安全性體現在哪裡呢?

在讀寫操作上加了鎖。

jdk一般升級趨勢:

  • 簡化書寫;
  • 提高效率;
  • 增加安全性。