Java編程那些事兒74——java.lang包介紹1

來源:互聯網
上載者:User

Java編程那些事兒74——java.lang包介紹1

陳躍峰

出自:http://blog.csdn.net/mailbomb

9.4 JDK API包名綜述

         在整個JDK API中,大約包含1、200個包,總體來看,包名第一個名稱主要有三種:java、javax和org。其中以java開頭的包名是JDK的基礎語言套件,以javax開頭的屬於JDK擴充包(其中x是extend的簡寫),而以org開頭的則是第三方組織提供的功能包(org是organization的簡寫)。而在JDK API中還包含了一些以com.sun開頭的包名,這些是SUN公司提供的一些功能包,由於這些包中的類隨著JDK版本的更改變化很大,不具備相容性,所以未在標準的JDK API文檔中進行公開。

         在本章接下來的內容中,首先介紹常用的類的功能以及基本使用,這些介紹主要涵蓋java.lang包和java.util包中的內容。

9.5 java.lang包

         java.lang包是Java基礎語言套件(其中lang是language(語言)的簡寫),該包中包含Java語言所需要的基本的功能類、介面等資訊,是進行Java語言編程的基礎。

         由於在進行Java語言編程時,該包的使用特別頻繁,所以在Java語言中,該包是被預設引入的。

         下面就介紹一下該包中常見類的功能以及相關使用。

9.5.1 Object

         Object類Java語言的靈魂,因為所有的類(除了Object類),都是該類的子類,即使不書寫繼承,系統也會自動繼承該類,所以Object是整個Java語言繼承樹的唯一一個根,這就是Java語言特色的單根繼承體系。包括數組也實現了該類中的方法。

         由於Java語言的這種單根繼承體系,所以整個Java語言的結構中很方便的實現了很多複雜的特性,例如多線程等控制,也可以很方便的對於整個Java語言體系進行更新。

         由於Object類是Java語言中所有類的父類,所以Object類中的方法將出現在每個類的內部,熟悉該類中的常見方法中的使用,是每個程式員學習的基礎。

         1、equals方法

                   equals方法實現的功能是判斷兩個對象的內容是否相同。Object類中該方法的實現很簡單,Object類中equals方法實現的代碼如下(說明:該代碼可以從JDK安裝目錄下的src.zip中找到):

                            public boolean equals(Object obj) {

                                     return (this ==
obj);

                       }

                   在Object類中方法的實現比較簡單,如果真正需要在項目中進行比較時,這個equals方法的作用是無法達到實際的要求的。所以如果在項目中涉及的類需要比較該類型的對象時,則必須覆蓋equals方法。

                   下面以一個簡單的類為樣本,編寫一個簡單的equals方法,原始碼如下:

                            /**

 * equals方法編寫樣本

 */

public class MyEquals {

                                     /**對象成員變數*/

                                     String name;

                                     /**基礎資料型別 (Elementary Data Type)成員變數*/

                                     int n;

        

                                     /**

                                      * 判斷對象內容是否相同

                                      * @param obj 需要比較的對象

                                      */

                                     public boolean equals(Object obj){

                                               //如果比較的內容是自身

                                               if(obj == this){

                                                        return true;

                                               }

                  

                                               //物件類型不同

                                               if(!(obj instanceof
MyEquals)){

                                                        return false;

                                               }

                                               //轉換成當前類類型

                                               MyEquals m = (MyEquals)obj;

                           

                                               /*依次比較對象中每個變數*/

                                               //name屬性不同

                                               if(!name.equals(m.name)){

                                                        return false;

                                               }

                                               //n屬性不同

                                               if(!(n == m.n)){

                                                        return false;

                                               }

                  

                                               //如果都相同,則返回true

                                               return true;

                                     }

}

                   在實際比較時,首先判斷是否是自身,然後再判斷對象的類型是否符合要求,可以使用instanceof關鍵字進行判斷,該運算子的文法格式為:

                            對象名 instanceof 類名

                   如果對象名是後續類名類型的對象,則結果為true,否則為false。

                   如果類型符合要求,然後就可以依次比較對象中每個屬性的值是否相同了,如果有一個屬性的值不相同則不相等。

         2、finalize方法

finalize方法的作用和前面介紹的構造方法的概念剛好相反,構造方法的作用是初始化一個對象,而finalize方法的作用是釋放一個對象佔用的記憶體空間時,會被JVM自動調用的方法。

說明:finalize方法的作用和C++中解構函式的作用一樣。

如果在對象被釋放時,需要執行一些操作的話,則可以在該類中覆蓋finalize方法,然後在方法內部書寫需要執行的代碼即可。

         3、hashcode方法

hashcode方法的作用是獲得一個數值,該數值一般被稱作散列碼,使用這個數值可以快速判斷兩個對象是否不相同,主要應用於集合架構中類的快速判斷。

兩個內容相同的對象,其hashcode方法的傳回值必須相同,而兩個不相同的對象其hashcode的值可能相同。

如果自己編寫的類需要儲存到集合類中,則覆蓋該方法可以提高集合類的執行效率。

         4、toString方法

toString方法是顯示對象內容時會被系統自動調用的方法,當輸出一個對象的內容時,系統會自動調用該類的toString方法,例如輸出Object類型的對象obj,則以下兩組代碼的功能是一樣的:

                            System.out.println(obj);

                            System.out.println(obj.toString());

                   而Object類中的toString類實現比較簡單,其原始碼為:

                            public
String toString() {

                                     return
getClass().getName() + "@" + Integer.toHexString(hashCode());

                       }

         如果需要自己的類的對象按照一定的格式進行輸出,則可以在自己設計的類內部覆蓋toString方法,然後設計需要的輸出格式即可。

至於Object類中的其它方法,下面做一個基本的介紹:

l  clone方法:複製對象。也就是建立一個和該對象的內容完全一樣的對象,新的對象擁有獨立的記憶體空間。

l  getClass方法:主要獲得對象的類型,該方法主要用於反射技術的實現。

另外的wait、notify和notifyAll等方法在是為了實現多線程的需要而實現的,將在後續的多線程技術中進行詳細的介紹。

9.5.2 Math

         Math類是一個數學工具類,在Java語言中,常用的數學常數和數學方法都在該類內部,而且無論是常數還是方法都是static類型的,方便程式員進行實際的使用。

         下面範例程式碼是調用Math類中的abs方法實現求數位絕對值的實現代碼:

                   /**

 * Math類基本使用

 */

public class MathDemo {

                            public static void main(String[] args)
{

                                      int m = -10;

                                      int n = Math.abs(m);

                                      System.out.println("絕對值是:" + n);

                            }

}

         由於Math類的方法作用比較簡單,這裡就不一一舉例了,具體的方法請參閱JDK API文檔。

         

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.