<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## Java編程那些事兒74——java.lang包介紹1 陳躍峰 出自:[http://blog.csdn.net/mailbomb](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; ??????????????????????????? ???????? /**基本數據類型成員變量*/ ??????????????????????????? ???????? int n; ???????? ??????????????????????????? ???????? /** ??????????????????????????? ???????? ?* 判斷對象內容是否相同 ??????????????????????????? ???????? ?* @param obj 需要比較的對象 ??????????????????????????? ???????? ?*/ ??????????????????????????? ???????? public boolean equals(Object obj){ ??????????????????????????? ?????????????????? //如果比較的內容是自身 ??????????????????????????? ?????????????????? if(obj == this){ ??????????????????????????? ??????????????????????????? return true; ??????????????????????????? ?????????????????? } ?????????????????? ??????????????????????????? ?????????????????? //對象類型不同 ??????????????????????????? ?????????????????? if(!(obj instanceofMyEquals)){ ??????????????????????????? ??????????????????????????? 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類實現比較簡單,其源代碼為: ~~~ ??????????????????????????? publicString toString() { ???????? ??????????????????????????? returngetClass().getName() + "@" + Integer.toHexString(hashCode()); ??? ?????????????????? } ~~~ 如果需要自己的類的對象按照一定的格式進行輸出,則可以在自己設計的類內部覆蓋toString方法,然后設計需要的輸出格式即可。 至于Object類中的其它方法,下面做一個基本的介紹: 1.? clone方法:復制對象。也就是創建一個和該對象的內容完全一樣的對象,新的對象擁有獨立的內存空間。 2.? 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文檔。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看