JAVA基礎&String&StringBuffered&StringBuilder

JAVA基礎&String&StringBuffered&StringBuilder

String 類

字符串的特點:

1、java中用String類來描述字符串。

2、字符串一但初始化就不可以被改變,因為是個常量。所以可以被共享

String s = "abc";// 定義一個類類型的變量s指向了一個字符串對象

String s2 = new String("abc");

這兩個是有差別的,s對應的字符串在字符串緩衝池中。

當我們定義s2後此時在堆內存中創建了一個字符串對象,然後把緩衝池中的內容存放到對象中。

如何創建字符串對象呢?

1,直接使用 "".String s = "abc";

2,將一個字節數組或其中的部分變成字符串。

3,將一個字符數組或其中的部分變成字符串。

將數組變成字符串,可以用字符串構造函數來完成

String( char [] value ) 將字符數組轉換成字符串

/*

* 字符串的特點:

* 1,java中用String類來描述字符串。

* 2,字符串一但初始化就不可以被改變。因為是個常量。

*/

String s = "abc";//定義一個類類型的變量 s 指向了一個字符串對象。

String s1 = "abc";

System.out.println(s == s1);//true

String s2 = new String("abc");

System.out.println(s == s2);//false;

System.out.println(s.equals(s2));//String類的equals覆蓋了Object中的equals方法,

//用來判斷字符串對象的內容是否相同。

String a = "abcd";

String a1 = "ab";

String a2 = "cd";

String b = a1+a2;

String c = "ab"+"cd";

System.out.println("a==b:"+(a==b));

System.out.println("a==c:"+(a==c));

按照面向對象的思考方式來思考字符串對象的功能。

1,獲取;

1.1 獲取長度。

int length();

1.2 獲取字符串中的字符。

char charAt(index);

1.3一個字符或者一個字符串在一個字符串的中的位置。

int indexOf(ch)

int indexOf(string)

int indexOf(ch,fromIndex)

int indexOf(string,fromIndex)

int lastIndexOf(ch);

這些獲取索引位的方法,如果沒有要查找的內容,返回-1.

所以這個方法還有另一個應用,就是判斷字符或者字符串是否存在。

1.4獲取部分字符串。

String substring(begin,end);包含頭,不包含尾。

2,判斷。

2.1 是否包含指定的字符串。

boolean contains(string);

2.2 是否是以指定的字符串開頭。

boolean startsWith(string);

2.3 是否是以指定的字符串結尾。

boolean endsWith(string);

2.4忽略大小寫判斷字符串內容。

boolean equalsIgnoreCase(string);

3,轉換。

3.1 將字符串轉成大小寫。

String toLowerCase();

String toUpperCase();

3.2 將字符串轉成數組。

byte[] getBytes();//字節數組。

char[] toCharArray();//字符數組

3.3 將字符串轉成字符串數組。

String[]

3.4 將字符串中的中內容進行替換。

String replace(ch1,ch2);

String replace(string1,string2);

3.5 去除字符串兩端的空格。

String trim();


StringBuffer 是一個容器

當要創建一個對象的時候,首先查閱API文檔,看是否有

構造函數存在,如果有才能創建,否則無法創建此類的實例對象

字符串緩衝區的特點:

1、用於存儲數據的容器。

2、該容器的長度是可變的。

3、該容器可以存儲基本數據和引用數據類型

append() 支持常見數據類型 但是不能直接添加 byte 和 short

常見創建容器對象

StringBuffer sb = new StringBuffer();

既然是容器

應該具備一些常見的功能

1、添加數據

StringBuffer s1 = sb.append("ab"); 太爛了

StringBuffer s1 = sb.append("cd");

常用

sb.append("ab").append("cd"); 方法鏈調用

append是在結尾追加數據,前面數據和此時添加數據變成一個字符串

insert() 插入數據, StringBuffer insert(index , data) 根據指定的位置插入data數據

當前位置上的數據會被順延。

2、刪除數據

delete( int start , int end ) 一般有頭有尾的參數,一般都是包含頭不包含尾

清空緩衝區

sb.setlength(0);

StringBuffer sb = new StringBuffer();從新開闢了一個緩衝區

sb.delete(0.sb.length); 最合理

3、查找數據

char charAt(int index);

int indexOf(String str);

indexOf(String str, int fromIndex)

4、修改數據

setCharAt(int index, char ch);

replace(int start,int end,String str);

reverse();字符串換反轉

可變數組的原理:

字符串緩衝區和數組的區別:

1、數組是固定長度

字符串緩衝區是可變長度

2、數組中的元素類型是固定同一類型

字符串緩衝區的元素類型是任意類型,也可以是用一類型

3、數組對象,只有一個length屬性,然後通過角標操作數組的元素

字符串緩衝區是通過一系列的方法(怎刪改查)來炒作緩衝區中的元素

4、數組中的元素,通過角標直接訪問使用

字符串緩衝區的元素通常經過操作後,都要通過toString變成字符串使用。

StringBuilder 是JDK1.5 以後才出現的

是可以替代 Stringbuffer 的

但是他是線程不同步的,StringBuffer是線程同步的

雖然它在多線程時不安全,但是在單線程時效率高

StringBuilder 和 StringBuffer 的用法一模一樣

對於java的升級無外乎是哪個原因:

1、提高效率

2、簡化書寫

3、提高安全性

基本數據類型包裝成類

byteByte

shortShort

intInteger

longLong

floatFloat

doubleDouble

charCharacter

booleanBoolean

把基本數據類型封裝成對象有什麼好處呢?

可以吧對象中的定義更多的屬性和行為對基本數據值進行操作

比如,整數的範圍。如果整數被封裝成對象,那麼整數的取值範圍,當然是整數對象自己最清楚

所以只要調用對象中的屬性和行為就可以了。

基本數據類型包裝類,它的最常見作用之一:完成基本數據和字符串之間的轉換

完成字符串格式數值轉成整數

Integer.parseInt("23"+4);結果27

對於其他數據類型的字符串轉換方式都一樣

xxx a = Xxx.parseXxx(Xxxstring);

int a = Integer.parseInt("23");

但是需要注意有一種類型沒有轉換

Character

怎麼將整數轉成字符串呢?

int num = 4;

String s = num + "";

String s = Integer.toString(num);

怎麼將一個整數值封裝成對象呢?通過構造函數.還可以通過靜態方法valueOf的形式

Integer i1 = new Integer(4);

Integer i2 = new Integer("4");

sop(i1==i2); false

sop(i1.equals(i2)); true

怎麼將整數對象裝成整數呢?

使用 intValue方法

int y = i1.intValue()

將其他進制轉換成十進制

int x = Integer.parseInt("110",2);

sop(x+1);

在1.5版本後對基本數據類型對象包裝類進行升級,可以像操作解一般數據類型一樣,操作包裝類型數據

這就是升級中的簡化書寫

但是需要注意,在使用簡寫時,要注意z可以的取得值中多了一個null

如果自動裝箱的數據在byte範圍之內,同樣的數據不在開闢空間

基本數據用大小與符號比較

對象比較用compareTo比較


分享到:


相關文章: