1. 程式人生 > >java暑期學習筆記(4)

java暑期學習筆記(4)

earch acea val 註意 自動 instance sta mount gree

# 2018.7.12 #
* 1.StringBuffer
* A:StringBuffer的構造方法:
* public StringBuffer():無參構造方法
* public StringBuffer(int capacity):指定容量的字符串緩沖區對象
* public StringBuffer(String str):指定字符串內容的字符串緩沖區對象
* B:StringBuffer的方法:
* public int capacity():返回當前容量。 理論值(不掌握) length+初始容量
* public int length():返回長度(字符數)。 實際值 實際字符個數
* 2.StringBuffer添加
* append返回一個StringBuffer,可以傳入任意數據,並返回字符區本身,同個對象
* 類中重寫了toString 方法,直接返回內容
* public StringBuffer insert(int start,int end):
* 在指定位置把任意類型的數據插入到字符串緩沖區裏面,並返回字符串緩沖區本身。
* 如果沒有指定位置的索引,就會報索引異常
* 3.StringBuffer刪除,緩沖區上這個索引沒有這個元素就會異常。
* public StringBuffer deleteCharAt(int index):
* 刪除指定位置的字符,並返回本身
* public StringBuffer delete(int start,int end):
* 刪除從指定位置開始指定位置結束的內容,並返回本身
* 包頭不包尾
* 清空緩沖區 sb.delete(0,sb.length());
* 4.StringBuffer的替換和反轉
* A: StringBuffer的替換功能
* public StringBuffer replace(int start,int end,String str):
* 從start開始到end用str替換
* B:StringBuffer的反轉功能
* public StringBuffer reverse():
* 字符串反轉
* 5.StringBuffer的截取
* A:StringBuffer的截取功能
* public String substring(int start):
* 從指定位置截取到末尾
* public String substring(int start,int end):
* 截取從指定位置開始到結束位置,包括開始位置,不包括結束位置
* B:註意事項
* 註意:返回值類型不再是StringBuffer本身
* 6.StringBuffer和String的相互轉換
* A:String -- StringBuffer
* a:通過構造方法
* b:通過append()方法
* B:StringBuffer -- String
* a:通過構造方法
* b:通過toString()方法
* c:通過subString(0,length);
* 7.StringBuilder方法與StringBuffer一樣
* StringBuffer是jdk1.0版本的,是線程安全的,效率低
* StringBuilder是jdk1.5版本的,是線程不安全的,效率高
* 8.String是一個不可變的字符序列,StringBuffer,StringBuilder是可變的字符序列
* 9.二分查找的前提是有序。
* 10.Arrays類 (需要導包)
* A:Arrays類概述
* 針對數組進行操作的工具類。
* 提供了排序,查找等功能。
* B:成員方法
* public static String toString(int[] a) 數組轉字符串
* public static void sort(int[] a) 排序
* public static int binarySearch(int[] a,int key) 查找 數組應該有序且元素不重復
* 11.基本類型包裝類
* 將基本數據類型封裝成對象的好處在於可以在對象中定義更多的功能方法操作該數據
* 常用的操作之一:用於基本數據類型與字符串之間的轉換。
*
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

* 12.String和int類型的相互轉換
* A:int -- String
* a:和""進行拼接
* b:public static String valueOf(int i)
* c:int -- Integer -- String(Integer類的toString方法())
* d:public static String toString(int i)(Integer類的靜態方法)
* B:String -- int
* a:String -- Integer -- int
* public static int parseInt(String s) 基本數據類型包裝類有八種,其中七種都有pareIntXXX的方法,可以將這七種的字符串表現成基本數據類型(char的包裝類Character沒有)
* 13.JDK5的新特性自動裝箱和拆箱
* 自動裝箱:把基本類型轉換為包裝類類型
* 自動拆箱:把包裝類類型轉換為基本類型
* 註意事項
* 在使用時,Integer x = null;代碼就會出現NullPointerException。
* 建議先判斷是否為null,然後再使用。
* 14.-127到128是byte的取值範圍,在範圍內,自動裝箱不用創建新對象,直接從常量池獲取,不在範圍內,就建。
* 15.正則表達式
* A:字符類 []代表單個字符
* [abc] a、b 或 c(簡單類)
* [^abc] 任何字符,除了 a、b 或 c(否定)
* [a-zA-Z] a到 z 或 A到 Z,兩頭的字母包括在內(範圍)
* [a-d[m-p]]a到d或m到p
* [a-z&&[def]]d,e,或f的交集
* [a-z&&[^bc]]a到z除了bc
* [a-z&&[^m-p]]a到z除了m-p
* [0-9] 0到9的字符都包括
* B:預定義字符類
* . 任何字符。一個點代表一個字符
* \d 數字:[0-9] \代表轉義字符,用時\\d
* \D 非數字
* \s 空白字符 [\t\n\x0B\f\r] \x0B垂直 \f翻頁 \r回車
* \S 非空白字符
* \W 非單詞字符
* \w 單詞字符:[a-zA-Z_0-9] 包括下劃線
* C:Greedy 數量詞
* X? 一次或一次也沒有 一次也沒有指空
* X* 零次或多次
* X+ 一次或多次
* X{n} 恰好 n 次
* X{n,} 至少 n 次
* X{n,m} 至少 n 次,但是不超過 m 次 包頭包尾
* 16.正則表達式的功能
* A:分割
* String類的功能:public String[] split(String regex)
* 用.分割時要用 String [] arr = s.split("\\.");
* B:替換
* String類的功能:public String replaceAll(String regex,String replacement)
* C:分組
* (.)\\1(.)\\2 快快樂樂,高高興興 \\1代表第一組出現一次\\2代表第二組出現一次
* (..)\\1 快活快活 高興高興
* D:獲取
* Pattern p = Pattern.compile("a*b"); 獲取一個正則表達式
Matcher m = p.matcher("aaaaab"); 獲取匹配器
boolean b = m.matches(); 看是否能匹配,匹配就返回true
相當於 "aaaaab".matches("a*b");
* 需求:把一個字符串中的手機號碼獲取出來
* String regex = "1[3578]\\d{9}";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(s); //s是一串有手機號的字符串
boolean b1 = m.find(); //true,要先找再獲取
while(m.find())
System.out.println(m.group());
* 17. ceil向上取整,結果是個double。floor向下取整,結果是個double。pow前面的數底數,後面的數是指數。round四舍五入,得到一個int。
* 18.System.arraycopy(src, 0, dest, 0, src.length);拷貝數組
* 原數組 開始 復制的 開始 復制長度
* 19.BigInteger的概述
* 可以讓超過Integer範圍內的數據進行運算
* 構造方法 public BigInteger(String val)
* add加 subtract減 multiply乘 divide除
* 20.BigDecimal為了能精確的表示、計算浮點數
* 同樣有+—*/
* 通過構造傳入字符串的發式,開發時推薦
* BigDecimal.valueOf(某個double數)然後再相減,也是推薦的
* 21.Date(util包下)
* 構造方法中參數傳為0代表的是1970/01/01 時間是8點是因為東八區
* public Date()
* public Date(long date)
* public long getTime()通過時間對象獲取毫秒值(System.currentTimeMills()通過系統類的方法獲取當前毫秒值)
* public void setTime(long time)
* 22.DateFormat類是抽象類,所以使用其子類SimpleDateFormat父類引用指向子類對象
* 23.Calendar 類是一個抽象類
* public int get(int field)通過字段獲取年,月,日(1月記為0相當於實際月份-1)

Calendar c = Calendar.getInstance();
System.out.println(c.get(Calendar.YEAR));
System.out.println(c.get(Calendar.MONTH));
System.out.println(c.get(Calendar.DAY_OF_MONTH));

* public void add(int field,int amount)
field輸入年、月、或日
amount 對指定字段進行操作 加或減
* public final void set(int year,int month,int date)
* public void set(int field,int amount) 設定指定字段

java暑期學習筆記(4)