String類


201936, 星期三java

21:53數組

 

1、Scanner安全

1.       Scanner的概述app

2.       Scanner的構造方法原理優化

a.       Scanner(Inputstream source)ui

b.       System類下有一個靜態的字段spa

                                       i.            public static final Inputstream in;標準的輸入流,對應着鍵盤錄入線程

c.     通常方法orm

                                       i.            hasNextxxx()判斷是否還有下一個輸入項,其中Xxx能夠是Int, Double等。若是須要判斷是否包含下一個字符串,則能夠省略xxx對象

                                     ii.            nextxxx()獲取下一個輸入項。Xxx的含義和上個方法中的xx相同,默認狀況下, Scanner使用空格,回車等做爲分隔符

3.       Scanner獲取數據出現的小問題及解決方案

a.       兩個經常使用的方法:

                                       i.            獲取一個int類型的值:public int nextInt();

                                     ii.            獲取一個String類型的值:public String nextLint();

b.       當nextInt()和nextLine()一塊兒使用

public static void main(String[] args) {

Scanner sn=new Scanner(System.in);

System.out.println("請輸入一個整數:");

int i=sn.nextInt();

System.out.println("請輸入一個字符串");

String str=sn.nextLine();

}

實際上執行程序後,輸出的以下

<terminated /> Dem02 Scanner [Java API  請 輸 入 第 一 個 整 :  10  請 輸 入 第 二 個 字 符 串 :  10 , line2  工

∵ nextInt()是鍵盤錄入整數的方法,當咱們錄入10的時候,其實在鍵盤上錄入的是10和「\r\n」,nextInt()方法只獲取了10就結束了;nextLine()是鍵盤錄入字符串的方法,能夠接受任意類型,可是它遇到\r\n就證實一行結束了。

解決方案:

①建立兩個Scanner對象

public static void main(String[] args) {

Scanner sn=new Scanner(System.in);

System.out.println("請輸入一個整數:");

int i=sn.nextInt();

 

Scanner sn2=new Scanner(System.in);

System.out.println("請輸入一個字符串");

String str=sn2.nextLine();

}

②鍵盤錄入都使用nextLine()接收,而後在判斷後轉爲整數類型。(推薦)

 

2、String類

1.    String類的概述

a.    字符串字面值「abc」也能夠當作是一個字符串對象。

b.    字符串是常量,一旦被賦值就不能被改變了。雖然能夠從新賦值,可是已經不是相同的地址值了。

2.    String類的構造方法

a.    常見的構造方法:

                          i.        public String();//無參構造。

                         ii.        public String(byte[] bytes);//把字節數組轉成字符串

                       iii.        public String(byte[] bytes,int index,int length);//把字節數組的一部分轉成字符串

                       iv.        public String(char[] value);//把字符數組轉成字符串

                         v.        public String(char[] value,int index,int count);//把字符數組的一部分轉成字符串

                       vi.        public String(String original);//把字符串常量值轉成字符串

3.    常見問題:

a.    String s1=new String("abc");//這句代碼建立了幾個對象

兩個,一個在常量池中,一個在堆內存中。

b.    String s1="a" + 「b」+"c";String s2="abc";那麼s1==s2 和是s1.equals(s2)分別是什麼?

都爲true,java中有常量優化機制,在("a" + 「b」+"c")賦值給s1以前就已經變成了"abc"

c.     String s1="ab";String s2="abc"; String s3=s1+"c";那麼s2==s3和s2.equals(s3)輸出值爲?

s2==s3輸出false,緣由是在(s1+"c")時在堆中會建立一個StringBuild(或者StringBuffer)對象,再調用toString轉爲"abc",改地址和s2的地址值不同。因此爲false

d.       總結:

①字符串的equals方法,若是字符串的有相同的字符序列則爲true,不然爲false;字符串的「==」則比較的是字符串對象所指向的地址值是否相同;

②java語言提供對字符串串聯符(+)以及將其餘對象轉換爲字符串的特殊支持。字符串串聯是經過StringBuild(或者StringBuffer)類及其append方法實現的,字符轉換是經過toString()方法實現的。

4.       String類的判斷功能

a.       boolean equals( Object obj):比較字符串的內容是否相同,區分大小寫

b.       boolean equalsIgnore Case( string str):比較字符串的內容是否相同,忽略大小寫

c.       boolean contains( string str):判斷大字符串中是否包含小字符串

d.       boolean startswith( string str):判斷字符串是否以某個指定的字符串開頭

e.       boolean endsvath( String str:判斷字符串是否以某個指定的字符串結尾

f.        boolean isEmpty():判斷字符串是否爲空。

 

3、StringBuffer類的概述

1.    StringBuffer類的概述

a.    一個相似於String的字符串緩衝區,不能修改。雖然在任意時間點上它都包含某種特定的字符序列,但經過某些方法調用能夠改變該序列的長度和內容。

b.    線程安全的可變字符序列。

2.    StringBuffer和String的區別:

a.    String是一個不可變的字符序列。

b.    StringBuffer是一個可變的字符序列。

3.    StringBuffer類的構造方法

a.    構造方法:

                          i.        public StringBuffer();//無參構造,初始容量爲16個字符。

                         ii.        public StringBuffer(int capacity);//制定容量的字符串緩衝區對象

                       iii.        public StringBuffer(String str);//制定字符串內容的字符串緩衝區對象

b.    StringBuffer的方法:

                          i.        public int capacity();//返回當前容量。 理論值

                         ii.        public int length();//返回長度(字符數),實際值。

4.       StringBuffer經常使用方法:

a.       StringBuffer的添加功能

                                       i.            public StringBuffer append(String str);//能夠把任意類型數據添加到字符串緩衝區裏面,並返回字符串緩衝區自己。

                                     ii.            public StringBuffer insert(int offset,String str);//在制定位置把任意類型的數據插入到字符串緩衝區裏面,並返回字符串緩衝區自己。

eg

demo

運行結果

public class Demo_StringBuffer{

public static void main(String[] args) {

StringBuffer sb=new StringBuffer();

StringBuffer sb2=sb.append(true);

StringBuffer sb3=sb.append("helloworld");

StringBuffer sb4=sb.append(123);

}

}

計算機生成了可選文字: 口Console <terminated />Dem02StringBuff trueheima100 trueheima100 trueheima100 trueheima100

 

StringBuffer是字符串緩衝區,當new的時候是在堆內建立了一個對象,底層是一個長度爲16的字符數組,當調用添加方法時,不會再從新建立新對象,而是在不斷向原緩衝區添加字符

b.    StringBuffer的刪除功能

                          i.    public StringBuffer deleteCharAt(int index);//刪除指定位置的字符,並返回自己

                         ii.    public StringBuffer delete (int start,int end);//刪除從指定位置開始(包含)到指定位置(不包含)結束的內容,並返回自己。

c.     StringBuffer的替換功能:

                          i.    public StringBuffer replace(int start,int end,String str);//從start開始到end用str替換

d.       StringBuffer的反轉功能

                                       i.      public StringBuffer reverse();//字符串反轉

e.    Stringbuffer的截取功能

                          i.    public String substring(int start);//從指定位置截取到末尾

                         ii.    public String substring(int start,int end);//截取從start位置開始到end位置結束,包括開始位置,不包括結束位置。

注意:返回值再也不是StringBuffer,而是String,原StringBuffer自己不變化。

5.    String與StringBuffer的轉換

a.    String→Stringbuffer轉換

                          i.        經過構造方法: public StringBuffer(String str);

                         ii.        經過append()方法 eg:sb.append("helloworld");

b.    StringBuffer→String轉換

                          i.        經過構造方法: public String(StringBuffer sb);

                         ii.        經過toString()方法

                       iii.        經過substring(0,length);

相關文章
相關標籤/搜索