###### 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());
}
}
}
```
>執行結果

## 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]
}
}
```