一、 常用類
1、 Math類
1Math類提供了一序列基本數學運算和幾何函數的方法。
2Math類是final類,並且它的所有成員變量和成員方法都是靜態的。
Math類的常用屬性和方法
Þ靜態常量--PI :圓周率的double值
Þ靜態方法
double pow(double a,double b) |
計算a的b次方 |
double sqrt(double a) |
計算給定值的平方根 |
int abs(int a) |
計算int類型值a的絕對值,也接收long、float和double類型的參數 |
double ceil(double a) |
返回大於等於a的最小整數的double值 |
double floor(doble a) |
返回小於等於a的最小整數的double值 |
int max(int a,int b) |
返回int類型值a和b中的較大值,也接收long、float和double類型的參數 |
int min(int a,int b) |
返回int類型值a和b中的較小值,也接收long、float和double類型的參數 |
int round(float a) |
四捨五入返回整數 |
double random() |
返回帶正號的double值,該值大於等於0.0且小於1.0 |
2、 Random類
Random類的對象可以生成“僞隨機數”。
常用方法:
public int nextInt(int bound)
返回從0(包含)到bound(不包含)的一個“僞隨機數”整數值。
public boolean nextBoolean()
返回一個“僞隨機數”的boolean值。
代碼實例:
package common;
import java.util.Random;
public class RandomDemo {
public static void main(String[] args) {
Random ran=new Random();
int result=ran.nextInt(16)+3;
System.out.println("隨機返回3到18的數字"+result);
System.out.println("隨機返回boolean值:"+ran.nextBoolean());
}
}
3、 System類
成員變量
System類內部包含in、out和err三個成員變量,分別代表標準輸入流(鍵盤輸入),標準輸出流(顯示器)和標準錯誤輸出流(顯示器)。
‚成員方法
«public static void arraycopy(Object src , int srcPos, Object dest, int destPos, int length)
int[] a = {1,2,3,4};
int[] b = new int[5];
System.arraycopy(a,1,b,3,2);
«exit()方法
Public static void exit(int status)
該方法的作用就是退出程序。其中status的值爲0代表正常退出,非0代表異常退出。使用該方法可以在圖形界面編程中實現程序的退出功能等。
«gc()方法
public static void gc()
該方法的作用是請求系統進行垃圾回收。至於系統是否立刻回收,則取決於系統中垃圾回收算法的實現以及系統執行時的情況。
垃圾回收時,會先調用finalize()方法,釋放非java資源。
«currentTimeMillis方法
public static long currentTimeMillis()
以毫秒爲單位返回從1970年1月1日午夜到當前時間的毫秒數。
代碼示例:
package common;
public class Person {
// 在對象被JVM的gc回收之前,會先調用這個方法
@Override
protected void finalize() throws Throwable {
System.out.println("對象被回收之前做的事情...");
}
}
package common;
public class FinalizeDemo {
public static void main(String[] args) {
Person per=new Person();
per=null; // 將per引用置爲null,使堆內存中的Person對象變爲“垃圾”
System.gc(); // 顯式請求JVM進行垃圾回收gc
}
}
4、 Runtime類
作用:使應用程序與其運行環境相關聯
通過使用getRuntime()靜態方法獲得實例。
Þexec(String command)在單獨的進程中執行指定的字符串命令,該方法返回Process對象,使用Process對象的destroy()方法殺掉進程。
代碼示例:
package common;
import java.io.IOException;
import java.util.Scanner;
public class RuntimeDemo {
public static void main(String[] args) {
Runtime rt= Runtime.getRuntime();
rt.gc(); // 顯式請求JVM進行垃圾回收gc
System.out.println("當前JVM的內存總量是:"+rt.totalMemory()+"字節");
System.out.println("JVM試圖使用的最大內存量:"+rt.maxMemory());
System.out.println("當前JVM的空閒內存量:"+rt.freeMemory());
try {
rt.exec("notepad");
rt.exec("calc");
Process qq=rt.exec("F:\\Program Files (x86)\\Tencent\\QQ\\Bin\\QQ.exe"); // 打開QQ進程
Scanner scan=new Scanner(System.in);
System.out.print("要關閉QQ嗎?y/n");
String choice=scan.next();
if("y".equals(choice)){
qq.destroy(); // 銷燬進程
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
5、 Date類與 SimpleDateFormat類
Date類:表示日期和時間
提供操作日期和時間各組成部分的方法。
SimpleDateFormat類
用於定製日期時間格式
Date date = new Date(); //創建日期對象
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-
MM-dd HH:mm:ss");//定製日期格式
String now = sdf.format(date);
System.out.println(now);
6、 Calendar類
抽象類
用於設置和獲取日期/時間數據的特定部分
Calandar類提供一些方法和靜態字段來操作日曆。
方法或屬性 |
說明 |
int get(int field) |
返回給定日曆字段的值 |
MONTH |
指示月 |
DAY_OF_MONTH |
指示一個月中的某天 |
DAY_OF_WEEK |
指示一個星期中的某一天 |
二、 正則表達式
1、概念:正則表達式(regex)是使用字符串描述、匹配一系列符合某個句法規則的字符串。
2、用途:匹配、切割、替換、獲取字符串。
3、正則表達式由一些普通字符和一些元字符組成。
常見的元字符:
元字符 |
描述 |
^ |
匹配輸入字符串的開始位置 |
$ |
匹配字符串的結束位置 |
\d |
匹配一個數字字符。等價於[0-9] |
\D |
匹配一個非數字字符。等價於[^0-9] |
\s |
匹配任何空白字符,包括空格、製表符、換頁符等等。等價於[\n\r\t\f] |
\S |
匹配任何非空白字符。等價於[^\n\r\t\f] |
\w |
匹配包括下劃線的任何單個字符。等價於“[A-Za-z0-9]” |
4、Java中“\”的含義與作用
¾反斜線後面可以加特定字符,組成所謂的“轉義字符”。eg: \n \t
¾用於取消元字符的意義,使元字符變爲普通字符。
eg: “\\” 代表”\”。
¾用於組成正則表達式中的元字符。
eg: “\d” 在正則表達式中代表“匹配一個數字字符”。
5、Pattern類與Matcher類
¾Pattern類與Matcher類都在java.util.regex包中定義。
¾Pattern類的對象代表正則表達式編譯之後的對象;Matcher類主要用於執行驗證。
¾Pattern類的主要方法:
public static Pattern compile(String regex);
public Matcher matcher(CharSequence input);
¾Matcher類的主要方法:
Public boolean matches();
6、String類對正則表達式的支持
public boolean matches(String regex)
判斷字符串是否與給定的正則表達式匹配
‚public String replaceAll(String regex,String replacement)字符串替換
ƒpublic String[] split(String regex)字符串拆分
7、補充:
正則表達式中間的問號?有兩種作用:
第一種作用:重複前面表達式0次或1次。
第二種作用:在表示次數的元字符後加上?代表取消默認的貪婪匹配模式,變爲“非貪婪匹配模式”。
三、 枚舉類型
1、枚舉類型使用一組常量值表示特定的數據集合,該集合中的數據的數目確定(通常較少),且這些數據只能取預先定義的值。
2、Java枚舉類型均自動繼承java.lang.Enum類(該類繼 承了Object類)
3、聲明枚舉類型:
[public] enum 枚舉類型名稱{
枚舉對象1,枚舉對象2,.....,枚舉對象n;
}
eg: public enum Color{
RED,GREEN,BLUE;
}
4、獲取枚舉對象的兩種方法:
方法一:取得單個枚舉對象
枚舉.對象名
方法二:取得全部枚舉對象
枚舉.values()
注意:枚舉.values()返回的是一個對象數組,可以通過遍歷該對象數組獲取所有枚舉對象。
四、 集合概念與框架結構
1、爲什麼使用集合:
如果並不知道程序運行時會需要多少對象,或者需要更復雜方式存儲對象——可以使用java集合框架
2、集合的概念
集合:Java API所提供的一系列類的實例,可用於 動態存放多個對象。
‚java集合框架提供了一套性能優良、使用方便的接口和類,他們位於java.util包中。
ƒ特點:長度不固定,只能用於存儲引用類型對象。
3、Java集合框架結構
4、Java Collection接口
Collection接口定義了一些集合常用的方法
方法 |
說明 |
int size(); |
返回此collection中的元素數
|
Boolean isEmpty();
|
判斷此collection中是否包含元素 |
Boolean contains(Object obj);
|
判斷此collection是否包含指定的元素 |
boolean add(Object element); |
向此collection中添加元素 |
boolean remove(Object element);
|
從此collection中移除指定的元素 |
void clear();
|
移除些collection中所有的元素 |
Iterator iterator(); |
返回在此collection的元素上進行迭代的迭代器
|
Object[] toArray();
|
把此collection轉成數組 |
5、collection接口存儲特點:
存取對象的方法,兩個常用的子接口:
List接口:存放的元素有序且允許有重複的集合接口。
‚Set接口:存放的元素不包含重複元素的集合接口。
6、List集合及其實現類
nList接口是Collection接口的子接口
n實現List接口的集合類中的元素是有序的,且允許重複。
n List集合中的元素都對應一個整數型的序號記載其在集合中的位置,可以根據序號存取集合中的元素。
7、JDK API所提供的List集合類常用的有
uArrayList
uLinkedList
8、List接口常用的方法(List接口比Collection接口中新 增的幾個實用方法):
public Object get(int index);返回列表中元素數
‚public Object add(int index, Object element);
在列表的指定位置插入指定元素.將當前處於該位置的元素(如果有的話)和所有後續元素向右移動
ƒpublic Object set(int index, Object element) ;
用指定元素替換列表中指定位置的元素
„public Object remove(int index);
移除列表中指定位置的元素
…public ListIterator listIterator();
返回此列表元素的列表迭代器
9、實現類ArrayList
ArrayList是使用數組結構實現的List集合。
優點:對於使用索引取出的元素有較好的效率
它使用索引快速定位對象。
缺點:元素做刪除或插入時比較麻煩
因爲使用了數組,需要移動後面的元素以調整索引順序。
10、實現類LinkedList
LinkedList是使用雙鏈表實現的集合
LinkedList是新增了一些插入、刪除的方法
優點:對頻繁的插入或刪除元素有較好的效率
缺點:查詢元素時效率較低,因爲要從第一個元素開始查找
11、迭代器的使用
uIterator是專門的迭代輸出接口。所謂的迭代輸出就是將元素進行判斷,判斷是否有內容,如果有內容則把內容取出。
uIterator對象稱作迭代器,用以方便的實現對集合內元素的遍歷操作。
u所有實現了Collection接口的集合類都有一個iterator()方法用以返回一個實現了Iterator接口的對象。
Iterator it = coll.iterator();
while(it.hasNext()){
it.next();
}
u迭代器的使用方法:
Iterator接口中定義瞭如下方法:
boolean hasNext(); //判斷遊標右邊是否有元素
Object next(); //返回遊標右邊的元素並將遊標移動到下一個位置
u另一種遍歷集合的方法
用增強for遍歷集合中的元素
凡是能用 Iterator 迭代的集合都可以用JDK5.0中增強的for循環來更簡便的遍歷。
List<String> list=new ArrayList<String>();
…
eg: for(String data:list){
System.out.print(data+” ”)
}
12、泛型補充:
泛型(Generic type)是對java語言的類型系統的一種擴展,以支持創建可以按類型進行參數化的類。可以把類型參數看作是使用參數化類型時指定的類型的一個佔位符,就像方法中的形式參數是運行時傳遞的的值的佔位符一樣。
泛型的好處:
解決了類型安全的問題(運行期出現“java.lang.ClassCastException”異常)
泛型類舉例:
class Gen<T> {
private T ob; // 定義泛型成員變量
public Gen(T ob) {
this.ob = ob;
}
public T getOb() {
return ob;
}
public void setOb(T ob) {
this.ob = ob;
}
public void showType() {
System.out.println("T的實際類型是: " + ob.getClass().getName());
}
}
13、受限泛型
設置上限
類名稱<? extends 上限類>
只能接收上限類對象或其子類對象
‚設置下限
類名稱<? super 下限類>
接收下限類對象或其父類對象
注意:若定義泛型類,可以將?設置爲泛型標識
14、Set接口的實現類
Set接口沒有提供Collection接口額外的方法,但實現Set接口的集合類中的元素是不可重複的。
JDK API中所提供的Set集合類常用的有:
HashSet:散列存放
TreeSet:有序存放
LinkedHashSet
HashSet的存儲原理
u根據每個對象的哈希碼值(調用hashCode()獲得)用固定的算法算出它的存儲索引,把對象存放在一個叫散列表的相應位置(表元)中。
u如果對應的位置沒有其它元素,就只需要直接存入。
u如果該位置有元素了,會將新對象跟該位置的所有對象進行比較(調用equals()),以查看是否已經存在了:還不存在就存放,已經存在就不存儲。
15、HashSet集合的特點及使用技巧
HashSet不保存元素的加入順序。
HashSet接口存、取、刪對象都有很高的效率
對於存放到hashCode(Object obj)方法和equals()以實現對象相等規則的編寫。
16、TreeSet集合的特點
TreeSet:可以對加入其中的元素進行排序。但前提是,必須指定排序規則。
構造方法:public TreeSet()
如果使用TreeSet的無參構造實例化TreeSet集合,則加入到TreeSet集合中的元素所對應的類必須實現java.lang. Comparable<T>接口,複寫其中的int compareTo(T o)方法,並在方法中編寫排序規則。
在Comparable<T>接口的compareTo(T o)方法中,指定排序規則(以升序爲例):
public int compareTo(Girl girl){
if(this.xxx>girl.xxx){
return 1;
}else if(this.xxx<girl.xxx){
return -1;
}else{
return 0;
}
}
TreeSet比較排序的過程,已經對重複元素去重了。