JavaAPI學習(一):API && String類 && Stringbuffer && StringBuilder
一、API
1、API:英文 Aplication Progrmmer Iteface 的縮寫,即應用編程接口
由官方或第三方提供的能實現特點功能的程序封裝包,包含各功能類,接口,以及實現方法等;很多基礎功能不需要再重寫,直接調用即可;但因為Java的API十分豐富,常用的基礎API就有很多,也需要花時間熟悉這些API的功能和使用方法;
2、常用API
String類, StringBuffer, StringBuilder ,集合(list set map) ,包裝類,日歷日期,IO流 ,異常 ,線程等;
二、String類
2.1String類
1、String類:
即:String t = "HelloJava"; 其中"HelloJava"即為一個對象;
2、位置:java.lang.String;lang包為系統默認的導包,直接調用不用導包;
3、String 類代表字符串。
字符串是常量,它們的值在創建之後不能更改。字符串緩沖區才支持可變的字符串。因為 String 對象是不可變的,所以可以共享;
1 String s1 = "HelloWorld"; 2 String s2 = "HelloWorld";3 String s3 = "Hello" + "World"; 4 String s4 = "Hello" ; 5 String s5 = "World"; 6 String s6 = s4 + s5; //生成新的對象,創建新地址 7 System.out.println(s1 == s2); //直接量 true 8 System.out.println(s1 == s3); //直接量 true 9 System.out.println(s1 == s6); //間接量 false 10 11 String s7 = new String("HelloWorld");12 System.out.println(s1 == s7); //間接量 false
思考題:
String s7 = new String("HelloWorld"); 這句話創建了幾個對象?
兩個;new一個,"HelloWorld"本身就是個對象。
備註:
如果字符串創建的對象的時候是直接量賦值,那麽會將該對象放到常量池 中去,如果下次再有相同的直接量賦值,此時會先從常量池遍歷是否有該常量 存在,有則直接將該引用指向目標地址值,沒有則會重新創建新的地址值,並 將其放入常量池;(同之前的常量以及數值型基本數據一樣理解)。
2.2 String類中常見的一些方法(BJ)
1.charAt(int index);返回指定位置的字符
練習:
檢查一句話是否為回文?
回文:上海自來水來自海上
參考代碼:StringDemo.java
2.concat(String str);
將指定字符串拼接到字符串末尾;
3.contains(String str);
查看是否有指定的字符序列,有返回true,否則返回false
4.startsWith(String str,int i);
判斷指定字符串是否在字符串的起始/具體位置/結束;返回布爾值;
5.endsWith(String str);
判斷指定字符串是否在字符串的結束;返回布爾值;
6.subString(int sta,int end);
返回字符串指定範圍內(前包括,後不包括)的字符串;
7.toCharArray();
將指定字符串轉為字符數組
8.toLowerCase();
將所有的字母全部轉為小寫
9.toUpperCase();
將所有的字母全部轉為大寫
10.trim();
去除字符串兩邊空白(中間的不能去除)
11.valueOf(obj);
將數組\對象\基本數據類型轉為字符串類型
12.getBytes();
使用平臺默認的編碼字符集獲取字符串的字節序列,
將結果存入到字節數組中去
平臺默認的編碼字符集:
Windows GBK:中文占2個字節,英文占1個字節
Linux/IOS UTF-8:中文占3個字節,英文占1個字節
UNICODE字符集:中英文各占2個字節,最後單獨加2個字節進行相應的排序
13.indexOf(String str, int i);
返回指定字符str從第i個起在原字符串中第一次出現的位置
14.lastIndexOf(String str);
返回指定字符在原字符串中最後一次出現的位置
15.length();
返回字符串的長度
備註:區別length屬性和length()方法
獲取數組的長度用length屬性,獲取字符串長度用length()方法
16.replace();
用指定字符串替換原字符串中的部分內容(常用來替換敏感詞匯) ,支持正則表達式(見下一章);
17.split();
根據指定的條件進行分割,結果返回為字符串數組,支持正則表達式(見下一章);
綜合測試代碼:StringDemo.java
內容較多,寫得較亂,僅供參考,建議自測;
1 package API; 2 3 import java.util.Arrays; 4 5 import javax.swing.table.TableStringConverter; 6 7 import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper; 8 9 //import org.junit.Test; 10 11 /** 12 * @項目名稱:APIDay01 13 * @模塊功能:測試String類的各個函數功能 14 * @模塊版本: 15 * @JDKVersions:JDK 8.0 16 * @author: Kanekiyi 17 */ 18 public class StringDemo { 19 //@Test 20 public static void test1() { 21 /**判斷句子是否為回文**/ 22 String string = "上海自來水來自海上"; 23 int times=0; 24 boolean flag = true ; 25 for (int i = 0; i<string.length()/2;i++) { 26 if (string.charAt(i)!=string.charAt( string.length()-i-1) ) { 27 System.out.println(string+",這句話不是回文"); 28 flag = false ; 29 break; 30 } 31 if (true) { 32 System.out.println(string+",這句話是回文"); 33 break; 34 } 35 } 36 37 //找到字符串中的某個位置的字符 38 char c = string.charAt(5); 39 System.out.println("charAT()函數測試"+c); 40 } 41 42 public static void test2() { 43 String string = "java很吊"; 44 45 /**字符串的拼接*/ 46 String string2 = string.concat(",PHP最好"); 47 System.out.println("string2:"+string2); 48 49 /**判斷字符串是否在字符串的起始/具體位置/結束,在返回true 50 boolean b1 = string.startsWith("java"); 51 boolean b2 = string.startsWith("吊",5); 52 boolean b3 = string2.endsWith("吊"); 53 System.out.println(); 54 System.out.println("starts/endsWith測試"); 55 System.out.println(b1); 56 System.out.println(b2); 57 System.out.println(b3); 58 59 /**截取字符串的某一段作為新的字符串*/ 60 String string3 = string2.substring(7); 61 System.out.println("string3:"+string3); 62 //前包括,後不包括 63 String string4 = string2.substring(7,9); 64 System.out.println("string4:"+string4); 65 66 /***將字符串轉換為字符數組***/ 67 char[] chras= string2.toCharArray(); 68 System.out.println("chras:"+Arrays.toString(chras)); 69 70 /***將字符串進行大小寫互換***/ 71 String string5 = "CHINA"; 72 String string6 = string5.toLowerCase(); 73 System.out.println("string6:"+string6); 74 String string7 = string6.toUpperCase(); 75 System.out.println("string7:"+string7); 76 77 /***將字符串首位空格去除變成新的數組***/ 78 String string8 = " 1832668989 "; 79 String string9 = string8.trim(); 80 System.out.println("string9:"+string9); 81 82 /***將其它類型數據(基礎類型、引用)轉換為字符串***/ 83 int i4=57895; 84 String string10 = String.valueOf(i4); 85 System.out.println("string10:"+string10); 86 87 GusseZiMu gusseZiMu = new GusseZiMu(); 88 String string11 = String.valueOf(gusseZiMu); 89 System.out.println("string11:"+string11); 90 91 boolean b4 = false; 92 String string12 = String.valueOf(b4); 93 System.out.println("string12:"+string12); 94 95 /***將字符串的(與平臺的編碼格式有關) 96 ,轉換為byte型的數組***/ 97 String string13 = "我愛Java"; 98 byte[] by1 = string13.getBytes(); 99 System.out.println("字節長度:"+by1.length); 100 //字節長度與平臺編碼格式有關,Unicode編碼漢字占兩個字節,英文占一個字節 101 System.out.println(Arrays.toString(by1)); 102 103 /***返回指定字符在字符串中出現的位置***/ 104 String string14 = "1234d157a809a4525a1323"; 105 //出現的第一次位置 106 int index1 = string14.indexOf("a"); 107 System.out.println("index1:"+index1); 108 //從第九個開始找出現的位置 109 int index2 = string14.indexOf("a",9); 110 System.out.println("index2:"+index2); 111 //出現的最後的位置 112 int index3 = string14.lastIndexOf("a"); 113 System.out.println("index3:"+index3); 114 115 /**返回 字符串的長度 116 * 數組的長度是通過獲取其屬性,字符串是通過方法獲取 117 * 118 * ****/ 119 int strLength = string14.length(); 120 System.out.println("strLength:"+strLength); 121 122 /***字符中的字符替換***/ 123 String string15 = "魯班七號最肉"; 124 String string16 = string15.replace(‘肉‘, ‘脆‘); 125 System.out.println("string16:"+string16); 126 String string17 = string15.replaceAll(" 5|肉", "脆"); 127 System.out.println("string17:"+string17); 128 129 /***字符中的字符替換***/ 130 String string18 = "灰化肥,發黑,會揮發"; 131 String[] string19 = string18.split(","); 132 System.out.println("string19:"+string19); 133 134 } 135 136 public static void test3() { 137 /***判斷字符串是否包含某個字符***/ 138 String string = "java很吊"; 139 boolean c = string.contains("吊"); 140 System.out.println(c); 141 } 142 public static void main(String[] args) { 143 test1(); 144 test3(); 145 test2(); 146 147 } 148 }View Code
2.3第三方包
以上內容是java官方提供的API,也需要了解第三方jar包以及對自己封裝的包進行操作。 第三方j常用的是commons-lang3-3.1.jar
常用類:StringUtil類,測試方法如下
1、deleteWhitespace(String string); 刪除字符串中所有空格;
2、StringUtils.left(String string, int i); 返回字符串指定範圍的字符串;
測試代碼:
1 /** 2 * 3 */ 4 package API; 5 6 import org.apache.commons.lang3.StringUtils; 7 8 /** 9 * @項目名稱:APIDay01 10 * @模塊功能:測試第三方 11 * @模塊版本: 12 * @JDKVersions:JDK 8.0 13 * @author: Kanekiyi 14 */ 15 public class StingUtilDemo { 16 17 public static void main(String[] args) { 18 String string= " 我 哎 你 安家費 hhh 加法 "; 19 System.out.println(string); 20 // 刪除字符串中所有空格 21 String string2 = StringUtils.deleteWhitespace(string); 22 System.out.println(string2); 23 24 // 左起截取指定長度字符串 25 String str3=StringUtils.left(string2, 5); 26 System.out.println(str3); 27 } 28 29 }View Code
五、StringBuffer和StringBuilder
2.1、StringBuffer類和StringBuilder類
1、優點:String類頻繁的修改內容就會頻繁的創建對象,對資源的開銷較大此時能夠解決該問題,引入StringBuffer類和StringBuilder頻繁的修改String中的內容不會創建新的對象;
2、比較:
StringBuffer:線程安全 安全性高,效率低
StringBuilder:線程不安全 安全性低,效率高
2.2兩個類中常見的方法
1.append(String str);在字符串末尾追加字符串
2.insert(int i, String str);在指定位置插入字符串
測試代碼:
1 package API; 2 3 /** 4 * @項目名稱:APIDay01 5 * @模塊功能: 6 * @模塊版本: 7 * @JDKVersions:JDK 8.0 8 * @author: Kanekiyi 9 */ 10 public class StringBufferDemo { 11 public static void main(String[] args) { 12 StringBuffer stringBuffer = new StringBuffer(); 13 // 字符串末尾添加字符串 14 stringBuffer.append("魯班七號天下無敵"); 15 System.out.println(stringBuffer); 16 // 指定位置插入字符串 17 stringBuffer.insert(4, ","); 18 System.out.println(stringBuffer); 19 20 } 21 22 }View Code
有錯誤內容或不足之處望指正!!!
JavaAPI學習(一):API && String類 && Stringbuffer && StringBuilder