1.數組工具類
java.util.Arrays
- Arrays是一個工具類。
- 其中有一個sort()方法,可以排序,靜態方法(爲了方便使用,工具類的方法一般都是靜態,所以採用類名調用即可)。
- Arrays.sort();
- 需要使用Arrays方法時查找API幫助文檔,切記死記硬背,多用幾次就記住了。(在IDEA中按兩次Shift鍵,查找類,即可查找類中的方法)
- 二分查找方法:
Arrays.binarySearch(arr,x);x爲要查找的值。返回-1元素不存在。
2.字符串類(String)
- 字符串一旦創建不能更改.字符串是引用數據類型.
- 在jdk當中,字符串都是直接存儲在"方法區"的字符串常量池"當中的.因爲字符串在實際開發中使用太頻繁,爲了執行效率,所以把字符串放到了方法去的字符串常量中.
- 拼接操作並沒有更改字符串,而是在字符串常量池中生成了另一個字符串對象.遇到雙引號括起來的字符串就會生成一個字符串對象.
- 如果用new創建一個字符串,會在堆內存中生成一個對象,但是字符串常量池中也有.
*
- 直接定義字符串對象時,用雙等號比較兩個字符串相等的原因
- 而用new關鍵字創建String對象時.用雙號比較不相等的原因如下圖:.所以應該用equals方法.巧了String類重寫了equals方法.
- 字符串爲String類的對象者是爲什麼"fas".equals(k))可以使用的原因
- 題目:
- 將byte數組中的部分或全部元素轉換成字符串方法
- byte[] bytes ={97,98,99};
String s2 = new String(bytes);//這裏還有兩個量可以寫,第一是,下標起始位置,二是轉換的長度.
System.out.println(s2);(默認調用toString方法,String類重寫了toString方法.所以輸出abc). - char數組與上面的byte數組類似.
- compareTo方法類似於C語言的那個strcmp()函數.(在string.h 庫函數中,按照字母的排序,比較兩個字符串是否相等)
- contains()方法,判斷前面的字符串是否包含後面的字符串,返回值爲boolean類型.
- endWith(".java")方法判斷字符串是否以.java結尾.
- equalsIgnoreCase在equals基礎上忽略大小寫.
- getBytes()方法將字符串轉換成byte數組.
- indexOf()方法,判斷子字符串在字符串首次出現的索引.
- lastIndexOf方法,最後一次出現的索引.
- isEmpty()方法,判斷某個字符串是否爲空串
- .判斷數組長度是length屬性,判斷字符串是否爲空串用的是length方法.
- replace()方法,將字符串裏的老字符串替換成新的字符串.
- split()以括號內的字符進行拆分,存入String數組中.
- StartWith()判斷某個字符串是否以子字符串開始
- substring()返回從指定位置開始結束的字符串,兩個參數給的話可以返回指定兩個位置間的字符串,左閉右開.
- toCharArray()將字符串轉換成char數組.
- toLowerCase()將字符串轉換成小寫
- trim()方法,去除字符串前面和後面的空字符.
- String中只有一個方法是static,不需要對象I(valueof方法),將非字符轉換成字符串.並且println方法調用了valueof方法,所以 能打印在控制檯上的都是字符串.
開發中,如果需要進行字符串的頻繁拼接,會存在什麼問題?
因爲java的字符串是不可變的,每次拼接都會產生新的字符串.這樣會佔用大量的方法區內存,造成空間的浪費(字符串常量值).
- 這時StringBuffer就粉墨登場,哈哈,
- 用的時候,倒入類:import java.util.StringBuffer;
- 默認創建一個初始化容量爲16的byte[]數組,用來保存字符串.想要追加append()上,會自動擴容,想要刪除delete方法上…
- StringBuffer的優化.解決默認16空間,導致空間不足,經常擴容的問題.即創建時指定容量.
- StringBuffer sb = new StringBuffer(100);
StringBuilder和StringBuffer
StringBuffer中的方法都有:synchronized關鍵字修飾,表示StringBuffer在多線程環境下時安全的.而StringBuilder是不安全的.