【读码JDK】- java.lang.Double类Api介绍及测试
生活随笔
收集整理的這篇文章主要介紹了
【读码JDK】- java.lang.Double类Api介绍及测试
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【讀碼JDK】java.lang包目錄
請自行調整包路徑,中文僅供參考。
java.lang.Double類Api介紹及測試
package lang;import org.junit.Test;/*** @author jujun chen* @date 2020/03/23*/ public class DoubleTest {/*** 返回double參數的字符串表示形式*/@Testpublic void toString1() {double d = 0;System.out.println(Double.toString(d));Double d1 = Double.valueOf(0.0);System.out.println(d1.toString());/*** 0.0* 0.0*/}/*** 返回double參數的十六進制字符串* <p>* 如果參數為NaN,則結果為字符串“ NaN ”。* 否則,結果是一個表示參數的符號和大小的字符串。 如果符號為負,則結果的第一個字符為' - '( '\u002D' ); 如果符號為正,則結果中不會出現符號字符。 至于幅度m :* 如果m是無窮大,則由字符串"Infinity"表示; 因此,正無窮大產生結果"Infinity" ,負無窮大產生結果"-Infinity" 。* 如果m為零,則由字符串"0x0.0p0"表示; 因此,負零產生結果"-0x0.0p0" ,正零產生結果"0x0.0p0" 。* 如果m是具有規范化表示的double值,則子串用于表示有效數和指數字段。 有效數字由字符"0x1."表示,后跟有效數字的其余部分的小寫十六進制表示形式作為分數。* 除非所有數字都為零,否則將刪除十六進制表示中的尾隨零,在這種情況下使用單個零。 接下來,指數由"p"表示,后跟無偏指數的十進制字符串,就好像通過對指數值調用Integer.toString產生的一樣。* 如果m是具有次正規表示的double值,則有效數字由字符"0x0."表示,后跟有效數字的其余部分的十六進制表示形式作為分數。 刪除十六進制表示中的尾隨零。 接下來,指數由"p-1022"表示。* 請注意,在次正規有效數中必須至少有一個非零數字。*/@Testpublic void toHexString() {double d = 0;System.out.println(Double.toHexString(d));double d1 = 3.0;System.out.println(Double.toHexString(d1));/*** 0x0.0p0* 0x1.8p1*/}@Testpublic void valueOf() {/*返回Double對象,其中double由參數字符串s表示的double值。如果s是null ,則拋出NullPointerException 。s中的前導和尾隨空格字符s被忽略。*/System.out.println(Double.valueOf(" 123 "));/*返回表示指定的double值的Double實例。如果不需要新的Double實例,則通常應優先使用此方法,而不是構造函數Double(double) ,不像 byte有使用緩存,Double在這里并沒有使用緩存*/Double d1 = Double.valueOf(0.1);//123.0}/*** 使用指定的字符串初始化一個新double*/@Testpublic void parseDouble() {double d = Double.parseDouble(" 123 ");assert d == 123.0; //true}@Testpublic void isNaN() {/** 如果指定的號碼不是一個正確的數字,返回true*/Double d = Double.valueOf(0.0 / 0.0);assert Double.isNaN(d); //true/*如果此Double值不是一個正確的數字,返回true*/Double d2 = Double.valueOf(0.0 / 0.0);assert d2.isNaN(); //trueDouble d3 = 3.0;assert d3.isNaN() == false; //false}@Testpublic void isInfinite() {/** 如果指定的數是無限大,返回true*/Double d = Double.valueOf(0.0 / 0.0);assert !Double.isInfinite(d);assert !d.isInfinite();Double d1 = Double.valueOf(-1.0 / 0.0);assert Double.isInfinite(d1);assert d1.isInfinite();}/*** 如果指定的數是有限浮點值,返回true,對于NaN和無窮大,返回false*/@Testpublic void isFinite() {double d = 0.1;assert Double.isFinite(d);double d1 = 1;assert Double.isFinite(d1);//NaNDouble d2 = Double.valueOf(0.0 / 0.0);assert !Double.isFinite(d2);//無窮大Double d3 = Double.valueOf(-1.0 / 0.0);assert !Double.isFinite(d3);}/*** 返回double值轉換為byte后的值*/@Testpublic void byteValue() {Double d = Double.valueOf(0.01);byte b = d.byteValue();}/*** 返回double值轉換為short后的值*/@Testpublic void shortValue() {Double d = Double.valueOf(1000);short s = d.shortValue();}/*** 返回double值轉換為int后的值*/@Testpublic void intValue() {Double d = Double.valueOf(123.123);int i = d.intValue();}/*** 返回double值轉換為long后的值*/@Testpublic void longValue() {Double d = Double.valueOf(123.123);long l = d.longValue();System.out.println(l); //123}/*** 返回double值轉換為float后的值*/@Testpublic void floatValue() {Double d = Double.valueOf(123.123);float f = d.floatValue();}/*** 返回Double對象的double值*/@Testpublic void doubleValue() {Double d = Double.valueOf(123.123);double d1 = d.doubleValue();}/*** 返回此Double對象的哈希碼。 結果是由該Double對象表示的原始double值的long整數位表示的兩半的異或,完全由方法doubleToLongBits(double)產生。 也就是說,哈希碼是表達式的值:* (int)(v^(v>>>32))* 其中v的定義是:* long v = Double.doubleToLongBits(this.doubleValue());*/@Testpublic void hashCode1() {Double d = Double.valueOf(123.123);System.out.println(d.hashCode());/*返回double值的哈希碼; 與Double.hashCode()兼容*/double d1 = 123.123;System.out.println(Double.hashCode(d1));}/*** 將此對象與指定的對象進行比較。 結果為true當且僅當參數不是null且是Double對象時,該對象表示與此對象表示的double具有相同值的double 。* 為此目的,當且僅當方法doubleToLongBits(double)在應用于每個時返回相同的long值時,才認為兩個double值相同。* <p>* 請注意,在大多數情況下,類的兩個實例Double , d1和d2 ,d1.equals(d2)為true當且僅當d1.doubleValue() == d2.doubleValue()也為true 。* <p>* 但是,有兩個例外:* <p>* 如果d1和d2均表示Double.NaN ,則equals方法返回true ,但Double.NaN==Double.NaN的值為false 。* 如果d1代表+0.0而d2代表-0.0 ,反之亦然, equal測試的值為false ,即使+0.0==-0.0的值為true 。* 此定義允許哈希表正常運行。*/@Testpublic void equals1() {Double d1 = Double.valueOf(1);Double d2 = Double.valueOf(1);System.out.println(d1.equals(d2));System.out.println(d1 == d2);System.out.println(d1 == 1.0);System.out.println(Double.NaN==Double.NaN);Double d3 = Double.NaN;Double d4= Double.NaN;System.out.println(d3 == d4);System.out.println(d3.equals(d4));/*** true* false* true* false* false* true*/}/*** 以數字方式比較兩個Double對象。* <p>* 當應用于原始double值時,此方法執行的比較有兩種方式與Java語言數值比較運算符( <, <=, ==, >=, > )執行的比較不同:* <p>* 此方法認為Double.NaN等于其自身且大于所有其他double值(包括Double.POSITIVE_INFINITY )。* <p>* 0.0d通過該方法被認為是大于-0.0d 。* <p>* 這確保了此方法強加的Double對象的自然順序 與equals一致*/@Testpublic void compareTo() {Double d1 = Double.valueOf(1);Double d2 = Double.valueOf(1);System.out.println(d1.compareTo(d2));//Double.NaN > d1System.out.println(d1.compareTo(Double.NaN));}}總結
以上是生活随笔為你收集整理的【读码JDK】- java.lang.Double类Api介绍及测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 重庆邮电工商管理类转计算机专业,2020
- 下一篇: C++ CAS 操作