java基礎之API(String)

day01

 String

    是一個final類型的  不能被繼承,字符串的對象不會改變(裏面char[]字符數組的值不能被改變),字符串的引用變量可以改變

 

String 對象的創建(有很多種,歸納爲4種)

1)初始化的同時爲該對象賦予值   String str =”Hello”;

2)  使用new 關鍵字  String str = new String(“hello”);

3)  通過任何可以返回字符串的方法,用一個String 變量接受這些返回值的同時就創建了該對象

4)使用一個字符串常量就會自動創建String 對象   ”njcjk”.length();  “fdf”+”fdsfds”;

 

String 常量池

 爲了提高性能靜態字符串(字面量(直接寫出來的)常量  常量連接的結果)在常量池中創建  並儘量使用同一個對象重用靜態字符串  對於重複出現的字符串直接量會在常量池中查找並且返回  

 

 (變量連接的結果 ) a 創建動態新字符串對象是新對象  b 利用NEW運算創建的字符串是新對象 

但是參數“ ABC”  是靜態字符串對象來自常量池  

 

兩個字面量(常量)的連接時在編譯器中優化計算爲一個字符串對象  在運行期按照 “ABC”進行常量優化

 

 String s3 =“ABC”;

   String s4 = “ABC”

   String s5 = “A”+”BC”;

      s3==s4    true  值相等  引用地址也相等

         s3s4引用同一個對象   優點是重用了 

   s3 == s5  引用地址相同  這都用到了常量池

 

  String s6 = newString(“ABC”);

  S3==S6; false

 

  String s7 =”A”;

  String s8  =s7+ “BC” ;

  s8==s3; false

 

 == 基本變量比較的是   引用變量比較的是  引用的地址

  基本變量是賦予值  引用變量是指向

equals()用來比較引用類型是否相等  object默認給的是== 一樣  一般子類會重寫此方法根據業務邏輯給出具體的要求

 

 

byte[] bytes = s1.getBytes("UTF-8");

                   System.out.println(bytes.length);

s1中的內容進行編碼,中文windows採用GBK(一個字符有三個字節), LinuxMac採用UTF-8(一個字符編譯三個字節). getBytes方法不是檢查內存中字符串佔用的字節數量,因爲不固定但是可以傳參進行固定  主要用於字符串在網絡傳輸過程中亂碼問題的解決

 

 

加上重載的方法一共67個方法  構造方法就11

常用的方法:

  一個空格也代表佔用一個字符

   int a      indexOf(String[char] a);  取出字符第一次出現的位置找不到字符就返回-1

  String s  subString(7,7+4) ; 可以從7 開始節取4個字符  遵循左閉右開

  String s  subString(7) ;  7開始  到最後全部  2 都是關閉的

  char c   chatAt(int a) ;  取出位置的字符

  以上的數字都是下標從零開始的

 

    String s  trim(String s) ; 去掉前後空白部分

   booleanstartsWith(String s); //是否以那個字符開頭

  booleanendsWith(String s)  //是否以那個字符結尾     區分大小寫的   一個字符或者多個字符  空格也可以檢測   任何字符和空字符串相比都是true 注意與空格的區別 

  int  n  length() 字符串的長度    

  String  s   toUpperCase(String a) 變成大寫

  String  s   toLowerCase(String a) 變成小寫

 

  booleanequalsIgnoreCase(String another) 比較字符串與anther 是否一樣忽視大小寫

將此String與另一個String比較,不考慮大小寫。如果兩個字符串的長度相同,並且其中的相應字符都相等(忽略大小寫),則認爲這兩個字符串是相等的。

 

 int lastIndexOf()返回指定字符在此字符串中最後一次出現處的索引。

 

 String replace(charold,char new );  在字符串中用新的替換舊的

 

 String []  spilt (String s)   按照指定的分割符分割成字符串數組  並返回

public String[]split(String regex)   將分割的字符去掉  或者符和匹配的內容去掉

根據給定正則表達式的匹配拆分此字符串。

該方法的作用就像是使用給定的表達式和限制參數 0 來調用兩參數 split 方法。因此,所得數組中不包括                                                                                                                                                                                                                                                                                                             

例如,字符串"boo:and:foo" 使用這些表達式可生成以下結果:

Regex

結果

:

{ "boo", "and", "foo" }

o

{ "b", "", ":and:f" }

 

 

  String  valueOf(int s) ; 基本類型轉換成字符串

 

 char[]

toCharArray()
          將此字符串轉換爲一個新的字符數組。

 

 boolean compareTo(); 按照順序比較每個字符的unicode 編碼

 負數  

 整數

  相等

 

 String

concat(String str)
          將指定字符串連接到此字符串的結尾。

 boolean

contains(CharSequence s)
          當且僅當此字符串包含指定的 char 值序列時,返回 true。只能是字符串

 

public boolean isEmpty()

當且僅當length() 爲 0 時返回true。

staticString  valueOf(int a);   將一個int 類型的 返回一個字符串

返回 int 參數的字符串表示形式。

該表示形式恰好是單參數的 Integer.toString ()方法返回的結果。

StringtoString();返回字符串本身

 

/*

                             * 測試字符串的 trim() 方法

                             * 此字符串移除了前導和尾部空白的副本;如果沒有前導和尾部空白,則返回此字符串。  否則返回新的對象

                             */

                            Strings1="\r\n Hello  \t\r\n";

                            Strings2="Hello";

                            Strings3=s1.trim();

                            Strings4=s2.trim();

                            System.out.println(s3);

                            System.out.println(s4==s2);//true

 

 

/*

                             * startsWith 方法演示

                             * 檢查字符串是否以指定字符串爲開頭的。

                             */

                            Stringstr="王寶強";

                            booleanb=str.startsWith("");

                            System.out.println(b);//true

                           

                            b=str.startsWith("");

                            System.out.println(b);//true

                           

                            b=str.startsWith("王寶");

                            System.out.println(b);

 

 

 2  StringBuilder

 StringBuilderbuf=newStringBuilder();

           //length() 檢查數組中有效字符個數

              System.out.println(buf.length());

               //capacity() 容量:字符數組的實際長度默認爲 16

              System.out.println(buf.capacity

 

 

StringBuilder(int capacity)
          構造一個不帶任何字符的字符串生成器,其初始容量由 capacity 參數指定。

StringBuilder(String str)

 

StringBuilder它裏面的方法的索引位置都是左閉右開  通常都是66+4

  append(String s);

   insert(3,ih);

  delete(3.op);

  replace();

  reserve();

 

 String

substring(int start)
          返回一個新的 String,它包含此字符序列當前所包含字符的子序列。

 String

substring(int start, int end)
          返回一個新的 String,它包含此序列當前所包含字符的子序列。

 

 int

capacity()
          返回當前容量。

 

 

具體看API

/*

                    * 可變字符串StringBuilder演示

                             */

                            StringBuilderbuf=new StringBuilder();

                            //length()檢查數組中有效字符個數

                            System.out.println(buf.length());

                            //capacity()容量:字符數組的實際長度

                            System.out.println(buf.capacity());

                            buf.append("傳奇");

                            System.out.println(buf.length());

                            System.out.println(buf.capacity());

                            buf.append("哪一年在家裏的時候");

                            buf.insert(3,"據說");

                            System.out.println(buf.capacity());                           

                            buf.append("天天學習");

                            System.out.println(buf.capacity());

                            //檢查字符串的內容

                            System.out.println(buf);

                            //替換字符

                            //StringBuilderAPI,適合函數式連寫

                            buf.replace(1,1+2, "老溼")

                               .delete(16, 16+2)

                               .append("吃雞");

                            System.out.println(buf);

                           

 

連續的字符串連接 s3 = s1 + s1 + s1 + s2;

JAVA 自動利用StringBuilder進行處理不需要利用 StringBuilder去優化

 

 

 

API  文檔

 stringBuffer    StringBuild;

 stringBuffer線稱安全   性能較慢

StringBuild; 線稱不安全   性能較快

 */

                            Strings1 = "A";

                            Strings2 = "B";

                            /*

                             * Java 中字符串鏈接功能是利用StringBuilder

                             * 實現的,s3= s1+s2 相當於

                             * s3 = new StringBuilder(s1)

                             *     .append(s2).toString();

                             */

                            Strings3 = s1+s2;

                            s3= s1+s3;//創建 StringBuilder

                            s3= s1+s3;//創建 StringBuilder

                            s3= s1+s3;//創建 StringBuilder

                            s3= s1+s3;//創建 StringBuilder

                           

                            StringBuilderbuf=new StringBuilder(s2);

                            buf.insert(0,s1);

                            buf.insert(0,s1);

                            buf.insert(0,s1);

                            buf.insert(0,s1);

                            s3= buf.toString();

                           

                            /*

                             * 性能測試

                             */

                            testString(10000);

                            testStringBuilder(10000);

                           

                           

                            /*

                             * 連續的字符串連接

                             * s3 = s1 + s1 + s1 + s2;

                             * Java 會自動利用一個StringBuilder進行處理

                             * 不需要利用StringBuilder 去優化性能。

                             *

                             * 字符串字面量會在編譯器期間優化爲一個字符串

                             * 對象

                             * s3 = "A" + "B" +"C" + "D"

                             * s3 = "A" + 1 + 2 + 3;

                             */

              }

              /**

               * 測試String的連接性能

               */

              publicstatic void testString(int n){

                            longt1 = System.nanoTime();

                            Strings="";

                            for(inti=0; i<n; i++){

                                          s= s+"A";

                            }

                            longt2 = System.nanoTime();

                            System.out.println(t2-t1);

              }

              /**

               * 測試StringBuilder的連接性能

               */

              publicstatic void testStringBuilder(int n){

                            longt1=System.nanoTime();

                            StringBuilderbuf=new StringBuilder();

                            for(inti=0; i<n; i++){

                                          buf.append("A");

                            }

                            longt2=System.nanoTime();

                            System.out.println(t2-t1);

              }

 


day01

 

  1  String

    是一個final類型的  不能被繼承,字符串的對象不會改變(裏面char[]字符數組的值不能被改變),字符串的引用變量可以改變

 

String 對象的創建(有很多種,歸納爲4種)

1)初始化的同時爲該對象賦予值   String str =”Hello”;

2)  使用new 關鍵字  String str = new String(“hello”);

3)  通過任何可以返回字符串的方法,用一個String 變量接受這些返回值的同時就創建了該對象

4)使用一個字符串常量就會自動創建String 對象   ”njcjk”.length();  “fdf”+”fdsfds”;

 

String 常量池

 爲了提高性能靜態字符串(字面量(直接寫出來的)常量  常量連接的結果)在常量池中創建  並儘量使用同一個對象重用靜態字符串  對於重複出現的字符串直接量會在常量池中查找並且返回  

 

 (變量連接的結果 ) a 創建動態新字符串對象是新對象  b 利用NEW運算創建的字符串是新對象 

但是參數“ ABC”  是靜態字符串對象來自常量池  

 

兩個字面量(常量)的連接時在編譯器中優化計算爲一個字符串對象  在運行期按照 “ABC”進行常量優化

 

 String s3 =“ABC”;

   String s4 = “ABC”

   String s5 = “A”+”BC”;

      s3==s4    true  值相等  引用地址也相等

         s3s4引用同一個對象   優點是重用了 

   s3 == s5  引用地址相同  這都用到了常量池

 

  String s6 = newString(“ABC”);

  S3==S6; false

 

  String s7 =”A”;

  String s8  =s7+ “BC” ;

  s8==s3; false

 

 == 基本變量比較的是   引用變量比較的是  引用的地址

  基本變量是賦予值  引用變量是指向

equals()用來比較引用類型是否相等  object默認給的是== 一樣  一般子類會重寫此方法根據業務邏輯給出具體的要求

 

 

byte[] bytes = s1.getBytes("UTF-8");

                   System.out.println(bytes.length);

s1中的內容進行編碼,中文windows採用GBK(一個字符有三個字節), LinuxMac採用UTF-8(一個字符編譯三個字節). getBytes方法不是檢查內存中字符串佔用的字節數量,因爲不固定但是可以傳參進行固定  主要用於字符串在網絡傳輸過程中亂碼問題的解決

 

 

加上重載的方法一共67個方法  構造方法就11

常用的方法:

  一個空格也代表佔用一個字符

   int a      indexOf(String[char] a);  取出字符第一次出現的位置找不到字符就返回-1

  String s  subString(7,7+4) ; 可以從7 開始節取4個字符  遵循左閉右開

  String s  subString(7) ;  7開始  到最後全部  2 都是關閉的

  char c   chatAt(int a) ;  取出位置的字符

  以上的數字都是下標從零開始的

 

    String s  trim(String s) ; 去掉前後空白部分

   booleanstartsWith(String s); //是否以那個字符開頭

  booleanendsWith(String s)  //是否以那個字符結尾     區分大小寫的   一個字符或者多個字符  空格也可以檢測   任何字符和空字符串相比都是true 注意與空格的區別 

  int  n  length() 字符串的長度    

  String  s   toUpperCase(String a) 變成大寫

  String  s   toLowerCase(String a) 變成小寫

 

  booleanequalsIgnoreCase(String another) 比較字符串與anther 是否一樣忽視大小寫

將此String與另一個String比較,不考慮大小寫。如果兩個字符串的長度相同,並且其中的相應字符都相等(忽略大小寫),則認爲這兩個字符串是相等的。

 

 int lastIndexOf()返回指定字符在此字符串中最後一次出現處的索引。

 

 String replace(charold,char new );  在字符串中用新的替換舊的

 

 String []  spilt (String s)   按照指定的分割符分割成字符串數組  並返回

public String[]split(String regex)   將分割的字符去掉  或者符和匹配的內容去掉

根據給定正則表達式的匹配拆分此字符串。

該方法的作用就像是使用給定的表達式和限制參數 0 來調用兩參數 split 方法。因此,所得數組中不包括                                                                                                                                                                                                                                                                                                             

例如,字符串"boo:and:foo" 使用這些表達式可生成以下結果:

Regex

結果

:

{ "boo", "and", "foo" }

o

{ "b", "", ":and:f" }

 

 

  String  valueOf(int s) ; 基本類型轉換成字符串

 

 char[]

toCharArray()
          將此字符串轉換爲一個新的字符數組。

 

 boolean compareTo(); 按照順序比較每個字符的unicode 編碼

 負數  

 整數

  相等

 

 String

concat(String str)
          將指定字符串連接到此字符串的結尾。

 boolean

contains(CharSequence s)
          當且僅當此字符串包含指定的 char 值序列時,返回 true。只能是字符串

 

public boolean isEmpty()

當且僅當length() 爲 0 時返回true。

staticString  valueOf(int a);   將一個int 類型的 返回一個字符串

返回 int 參數的字符串表示形式。

該表示形式恰好是單參數的 Integer.toString ()方法返回的結果。

StringtoString();返回字符串本身

 

/*

                             * 測試字符串的 trim() 方法

                             * 此字符串移除了前導和尾部空白的副本;如果沒有前導和尾部空白,則返回此字符串。  否則返回新的對象

                             */

                            Strings1="\r\n Hello  \t\r\n";

                            Strings2="Hello";

                            Strings3=s1.trim();

                            Strings4=s2.trim();

                            System.out.println(s3);

                            System.out.println(s4==s2);//true

 

 

/*

                             * startsWith 方法演示

                             * 檢查字符串是否以指定字符串爲開頭的。

                             */

                            Stringstr="王寶強";

                            booleanb=str.startsWith("");

                            System.out.println(b);//true

                           

                            b=str.startsWith("");

                            System.out.println(b);//true

                           

                            b=str.startsWith("王寶");

                            System.out.println(b);

 

 

 2  StringBuilder

 StringBuilderbuf=newStringBuilder();

           //length() 檢查數組中有效字符個數

              System.out.println(buf.length());

               //capacity() 容量:字符數組的實際長度默認爲 16

              System.out.println(buf.capacity

 

 

StringBuilder(int capacity)
          構造一個不帶任何字符的字符串生成器,其初始容量由 capacity 參數指定。

StringBuilder(String str)

 

StringBuilder它裏面的方法的索引位置都是左閉右開  通常都是66+4

  append(String s);

   insert(3,ih);

  delete(3.op);

  replace();

  reserve();

 

 String

substring(int start)
          返回一個新的 String,它包含此字符序列當前所包含字符的子序列。

 String

substring(int start, int end)
          返回一個新的 String,它包含此序列當前所包含字符的子序列。

 

 int

capacity()
          返回當前容量。

 

 

具體看API

/*

                    * 可變字符串StringBuilder演示

                             */

                            StringBuilderbuf=new StringBuilder();

                            //length()檢查數組中有效字符個數

                            System.out.println(buf.length());

                            //capacity()容量:字符數組的實際長度

                            System.out.println(buf.capacity());

                            buf.append("範傳奇");

                            System.out.println(buf.length());

                            System.out.println(buf.capacity());

                            buf.append("哪一年在家裏的時候");

                            buf.insert(3,"據說");

                            System.out.println(buf.capacity());                           

                            buf.append("天天學習");

                            System.out.println(buf.capacity());

                            //檢查字符串的內容

                            System.out.println(buf);

                            //替換字符

                            //StringBuilderAPI,適合函數式連寫

                            buf.replace(1,1+2, "老溼")

                               .delete(16, 16+2)

                               .append("吃雞");

                            System.out.println(buf);

                           

 

連續的字符串連接 s3 = s1 + s1 + s1 + s2;

JAVA 自動利用StringBuilder進行處理不需要利用 StringBuilder去優化

 

 

 

API  文檔

 stringBuffer    StringBuild;

 stringBuffer線稱安全   性能較慢

StringBuild; 線稱不安全   性能較快

 */

                            Strings1 = "A";

                            Strings2 = "B";

                            /*

                             * Java 中字符串鏈接功能是利用StringBuilder

                             * 實現的,s3= s1+s2 相當於

                             * s3 = new StringBuilder(s1)

                             *     .append(s2).toString();

                             */

                            Strings3 = s1+s2;

                            s3= s1+s3;//創建 StringBuilder

                            s3= s1+s3;//創建 StringBuilder

                            s3= s1+s3;//創建 StringBuilder

                            s3= s1+s3;//創建 StringBuilder

                           

                            StringBuilderbuf=new StringBuilder(s2);

                            buf.insert(0,s1);

                            buf.insert(0,s1);

                            buf.insert(0,s1);

                            buf.insert(0,s1);

                            s3= buf.toString();

                           

                            /*

                             * 性能測試

                             */

                            testString(10000);

                            testStringBuilder(10000);

                           

                           

                            /*

                             * 連續的字符串連接

                             * s3 = s1 + s1 + s1 + s2;

                             * Java 會自動利用一個StringBuilder進行處理

                             * 不需要利用StringBuilder 去優化性能。

                             *

                             * 字符串字面量會在編譯器期間優化爲一個字符串

                             * 對象

                             * s3 = "A" + "B" +"C" + "D"

                             * s3 = "A" + 1 + 2 + 3;

                             */

              }

              /**

               * 測試String的連接性能

               */

              publicstatic void testString(int n){

                            longt1 = System.nanoTime();

                            Strings="";

                            for(inti=0; i<n; i++){

                                          s= s+"A";

                            }

                            longt2 = System.nanoTime();

                            System.out.println(t2-t1);

              }

              /**

               * 測試StringBuilder的連接性能

               */

              publicstatic void testStringBuilder(int n){

                            longt1=System.nanoTime();

                            StringBuilderbuf=new StringBuilder();

                            for(inti=0; i<n; i++){

                                          buf.append("A");

                            }

                            longt2=System.nanoTime();

                            System.out.println(t2-t1);

              }

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章