程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java編程那些事兒74——java.lang包介紹

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

編輯:關於JAVA

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;

 /**基本數據類型成員變量*/

 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文檔。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved