1. 程式人生 > >Double類parseDouble()和valueOf()方法的區別

Double類parseDouble()和valueOf()方法的區別

數字型別的String字串轉換為浮點數通常採用parseDouble()和valueOf()方法,

兩者主要是存在以下兩點區別。

區別一:引數區別
Double.parseDouble(java.lang.String)的引數只能是String,如果引數改為double型別提示“The method parseDouble(String) in the type Double is not applicable for the arguments (double)”錯誤。
Double.valueOf()的引數型別可以是浮點型或者是字串均可。
 

 1 public void testTem() {
2 System.out.println("=================="); 3 String pi = "3.1415926"; 4 Double doubleValue1 = Double.valueOf(pi); 5 Double doubleParse1 = Double.parseDouble(pi); 6 System.out.println(String.format("doubleValue1 = %s, doubleParse1 = %s",doubleValue1, doubleParse1));
7 8 Double piOfDouble = 3.1415926; 9 Double doubleValue2 = Double.valueOf(piOfDouble); 10 Double doubleParse2 = Double.parseDouble(piOfDouble.toString()); 11 System.out.println(String.format("doubleValue2 = %s, doubleParse2 = %s",doubleValue2, doubleParse2)); 12 13
Float piOfFloat = Float.valueOf(pi); 14 Double doubleValue3 = Double.valueOf(piOfFloat); 15 Double doubleParse3 = Double.parseDouble(piOfFloat.toString()); 16 System.out.println(String.format("doubleValue3 = %s, doubleParse3 = %s",doubleValue3, doubleParse3)); 17 System.out.println("=================="); 18 }


控制檯輸出結果:

1 ==================
2 doubleValue1 = 3.1415926, doubleParse1 = 3.1415926
3 doubleValue2 = 3.1415926, doubleParse2 = 3.1415926
4 doubleValue3 = 3.141592502593994, doubleParse3 = 3.1415925
5 ==================


區別二:返回型別
Double.parseDouble(java.lang.String)把數字型別的字串轉換成double型別
Double.valueOf()方把數字型別的字串轉換成Double型別
Double.parseDouble()方法的原始碼:

    public static double parseDouble(String s) throws NumberFormatException {
            return FloatingDecimal.readJavaFormatString(s).doubleValue();
    }


Double.valueOf()方法的原始碼:

    public static Double valueOf(String s) throws NumberFormatException {
        // new Double()
            return new Double(FloatingDecimal.readJavaFormatString(s).doubleValue());
    }

 



通過格式化小數點位數兩者結果相同,可以看出除引數和返回型別外兩者區別不大。

    DecimalFormat df = new DecimalFormat("0.00");
    System.out.println(df.format(Double.parseDouble(pi)));
    System.out.println(df.format(Double.valueOf(pi)));


控制檯輸出結果:

    3.14
    3.14



參考:https://blog.csdn.net/astrologer_/article/details/78115171