###### tags: `Java` `公用類別庫` # Java自學紀錄 - 公用類別庫 # 數值處理 **Math**類別為Java中處理數值運算最主要的類別。 我個人覺得最常用的方法是 * abs - 絕對值 * pow - 次方 * sqrt - 開平方根 * cbrt - 開立方根 * max - 回傳最大數 * min - 回傳最小數 * random - 亂數 * round - 四捨五入 # 字串處理 ## String 型別(建構子) * String() ```java= String str = new String(); //宣告 str str = "lucas"; ``` * String(String str) ```java= String str = new String("lucas"); ``` * String(char[] value) 可以陣列中的元素轉為字串 ```java= char a[] = {'l','u','c','a','s'}; String str = new String(a); // str = "lucas" ``` ### 常用字串運算子 ```java= String a = "lucas"; String b = "is"; String c = "handsome"; //字串長度 System.out.println(a.length()); //5 //字串相加 System.out.println(a+b+c); //lucasishandsome //判斷字串是否相同,回傳true,false System.out.println(a==b); //回傳false ``` ### 常用字串方法 ```java= String a = "lucas"; String b = "is"; String c = "handsome"; String d = "aabbcc"; String e = "AAAAA"; String f = "bbbbb"; //查看第幾n個字元,要注意的是字串索引值是從0開始 System.out.println(a.charAt(3)); //a //給一個索引值,找出第一個出現的位置 System.out.println(c.indexOf('d')); //3 //將就字元置換成新字元 System.out.println(d.replace('b','d')); //aaddcc //取一長度內的字串,從str[a]~str[b-1] System.out.println(c.substring(2,6)); //ndso //字串轉小寫 System.out.println(e.toLowerCase()); //aaaaa //字串轉大寫 System.out.println(f.toUpperCase()); //BBBBB ``` ## StringBuffer類別 前面的String僅有回傳執行方法後的結果,並不會更改其內容。 若要更改其內容,可以用StringBuffer。 >StringBuffer 宣告方式 ```java= StringBuffer str = new StringBuffer(); ``` * StringBuffer() 此建構子無須回傳參數,其預設值為16 好用方法(使用方法跟String大致相同) * append 新增字串到最後面 * delete 刪除n~m的字串 * insert 在n位置插入字串 * reverse 反轉字串 ## StringTokenizer 他可以協助我們把一個句子分成不同小片段,例如:Lucas is handsome 可以分解成3個字,分別是Lucas,is,handsome。 * int str.countTokens() 可算出有幾個可分解的字 * String str.nextTokens() 回傳下一個待分解的字 * boolean str.hasMoreTokens() 是否還有待分解的字 ```java= import java.util.StringTokenizer; //要記的先載套件 public class Java_10_2d { public static void main(String[] args) { String str = "Lucas is handsome"; StringTokenizer newstr = new StringTokenizer(str); while(newstr.hasMoreTokens()){ System.out.println(newstr.nextToken()); } } } ``` >執行結果 ![](https://i.imgur.com/yH8FQhI.png) ## String的型別轉換 * 將其他型別轉換成String ```java= int a = 10; String str = Integer.toString(a); //10從int變成String ``` * 將String轉換成其他型別 ```java= String str = "123456"; int b; b = Integer.parseInt(str); //123456從字串變成int b++; //會等於123457 ``` ---- # 陣列處理 事先要載入套件 ```java= import java.util.Arrays ``` ## 填滿 Arrays.fill() ```java= int a[] = new int[5]; Arrays.fill(a,3)//將a陣列填滿3-->3,3,3,3,3 Arrays.fill(a,1,3,4)//將a[1]~a[3-1]填滿4-->3,4,4,3,3 ``` ## 判斷是否相等 Arrays.equals() ```java= int b[] = new b[3]; int c[] = new b[3]; boolean ans; ans = Arrays.equal(b,c); //true ``` ## 排序 Arrays.sort() ```java= int d[] = {5,6,2,1,4}; Arrays.sort(d);//小到大排列-->1,2,4,5,6 int e[] = {5,6,2,1,4}; Arrays.sort(a,1,4);//a[1]~a[4-1]sort-->5,1,2,6,4 ``` ## 搜尋 Arrays.binarySearch() 在binarySearch之前要先sort ```java= int f[] = {1,2,3,4,5}; //必須由小排到大的陣列 System.out.println(Arrays.binarySearch(f,3));//傳回位置-->2 ``` # 時間處理 記得先載入套件 * get() ```java= import java.util.Calendar; public class Java_10_4_calender { public static void main(String[] args) { Calendar c = Calendar.getInstance(); //取得物件實體 System.out.println(c.getTime()); //Thu Sep 10 00:13:39 CST 2020 } } ``` 除此之外還有很多類別常數(static)可以被get()取得。 例如 : YEAR,MONTH,DATE,AM,PM。 * set() ```java= //多載 import java.util.Calendar; public class Java_10_5 { public static void main(String[] args) { Calendar c = Calendar.getInstance(); System.out.println(c.getTime()); c.set(2019,5,20); System.out.println(c.getTime()); } } ``` >輸出結果 ``` Wed Sep 16 13:34:26 CST 2020 Thu Jun 20 13:34:26 CST 2019 ``` # 資料結構 ## stack類別 * push() * empty() * pop() * peek() * search() ```java= import java.util.Stack; public class Java_stack { public static void main(String[] args) { //stack宣告 Stack s = new Stack(); Stack ept = new Stack(); //push(),把元素推去stack的最後 s.push("hi"); s.push("lucas"); s.push(3.14159); //empty() 判斷Stack是否為空的 s.empty(); //false ept.empty(); //true //peek 可查看Stack最頂端的元素是甚麼 System.out.println(s.peek()); //3.15159 //pop() 去除Stack最頂端的元素 s.pop(); System.out.println(s); //[hi, lucas] //search() 找尋元素位置 //他是從頂端往下算的,最後一個元素為1 s.search("hi"); System.out.println(s.search("hi")); //2 //add() 新增元素 s.add("last"); System.out.println(s); //[hi, lucas, last] } } ```