java基礎系列(五)

一、 常用類

1、  Math

 1Math類提供了一序列基本數學運算和幾何函數的方法。

      2Math類是final類,並且它的所有成員變量和成員方法都是靜態的。

       Math類的常用屬性和方法

Þ靜態常量--PI :圓周率的double

    Þ靜態方法

double pow(double a,double b)

計算ab次方

double sqrt(double a)

計算給定值的平方根

int abs(int a)

計算int類型值a的絕對值,也接收longfloatdouble類型的參數

double ceil(double a)

返回大於等於a的最小整數的double

double floor(doble a)

返回小於等於a的最小整數的double

int max(int a,int b)

返回int類型值ab中的較大值,也接收longfloatdouble類型的參數

int min(int a,int b)

返回int類型值ab中的較小值,也接收longfloatdouble類型的參數

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("隨機返回318的數字"+result);

 System.out.println("隨機返回boolean值:"+ran.nextBoolean());

 

               }

 

}

3、 System

成員變量

       System類內部包含inouterr三個成員變量,分別代表標準輸入流(鍵盤輸入),標準輸出流(顯示器)和標準錯誤輸出流(顯示器)。

     ‚成員方法

         «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 {

   // 在對象被JVMgc回收之前,會先調用這個方法

      @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比較排序的過程,已經對重複元素去重了。

 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章