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()的参数类型可以是浮点型或者是字符串均可。

String pi = "3.1415926";
double floatOrDouble = 3.1415926;
double parseDouble = Double.parseDouble(pi);
//提示错误 Change type of"floatOrDoubleP" to "String"
//double floatOrDoubleP = Double.parseDouble(floatOrDouble);
System.out.println(parseDouble);
//System.out.println(floatOrDoubleP);
Double valueOf = Double.valueOf(pi);
Double floatOrDoubleV = Double.valueOf(floatOrDouble);
System.out.println(valueOf);
System.out.println(floatOrDoubleV);

控制台输出结果:

3.1415926
3.1415926
3.1415926
区别二:返回类型
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
Integer工具类也是很相似的,但是Integer的valueOf内部实现的时候会有一些不同。
Integer.valueOf()方法的源码:

public static Integer valueOf(int i) {
    if (i >= IntegerCache.low && i <= IntegerCache.high)
        return IntegerCache.cache[i + (-IntegerCache.low)];
    return new Integer(i);
}











  • 19
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本文是一个word讲义 介绍了 Figure circle Rectangle等在接口中计抽象中的用法 抽象 接口多态 public class Polymorphism { public static void main(String args[]) { Triangle t=new Triangle(5.0,2.0); t.show_area(); Rectangle r=new Rectangle(3.0,4.0); r.show_area(); Circle c=new Circle(10.0); c.show_area(); } } abstract class Figure { protected double x=10.0,y=5.0; abstract void show_area(); } class Triangle extends Figure { Triangle(double a,double b) { x=a; y=b; } void show_area() { System.out.println("triangle:"+(0.5*x*y)); } } class Rectangle extends Figure { Rectangle(double a,double b) { x=a; y=b; } void show_area() { System.out.println("rectangle:"+(x*y)); } } class Circle extends Figure { Circle(double a){x=a;} final double pi=3.1416; void show_area() { System.out.println("circle:"+(pi*x*x)); } } package inf; interface Figure { abstract double area(); } //Rectangle.java package inf; /** * * @author tai */ public class Rectangle implements Figure{ double width,height; public Rectangle(double w,double h) //构造方法 { width=w; height=h; } public double area(){ return (width * height); } } //Triangle.Java package inf; /** * * @author tai */ class Triangle implements Figure { double a; double b; double c; Triangle(double a,double b,double c) { this.a=a; this.b=b; this.c=c; } public double area() { double p=(a+b+c)/2; return Math.sqrt(p*(p-a)*(p-b)*(p-c)); } } //Circle.java package inf; /** * * @author tai */ class Circle implements Figure { double radius; Circle(double radius) { this.radius=radius; } public double area() { return Math.PI*radius*radius; } } 测试一: public class Test4 { public static void main(String args[]) { Triangle t=new Triangle(5.0,6.0,7.0); System.out.println("三角形面积="+t.area()); Rectangle r=new Rectangle(3.0,4.0); System.out.println("矩形面积="+r.area()); Circle c=new Circle(10.0); System.out.println("圆的面积="+c.area()); } } 测试二: package inf; import javax.swing.JOptionPane; public class Test5 { public static double totalArea1(Figure f[]) { double totalArea=0; for(Figure f1:f){ totalArea+=f1.area(); } return totalArea; } public static void main(String args[]) { Figure f[] =new Figure[3];//为什么 f[0]=new Triangle(5.0,6.0,7.0); f[1]=new Rectangle(6.0,87.0); String input=JOptionPane.showInputDialog("输入圆的半径"); Double r=Double.parseDouble(input); f[2]=new Circle(r); double totalArea=0; for(Figure f1:f){ totalArea+=f1.area(); } JOptionPane.showMessageDialog(null,"totalarea="+totalArea); JOptionPane.showMessageDialog(null,"totalarea1="+totalArea1(f)); } }
实验报告 实验中心(室): 计算机工程实验教学中心 实验分室: xxxx 实验课程: Android应用 实验名称: Android计算器实验 专业: xxxxxx 年级: xxx级 姓名: xxxxx 学号: xxxxxxxxx 日期: xxxxxx 1. 实验目的 1. 熟悉按钮(Button)的监听和使用; 2. 用Eclipse和Java开发一个计算器,具有"+""-""*""/"功能并在模拟器上运行; 2. 实验环境 Android开发平台 三.实验内容 1、在eclipse中创建一个新的Android Application Project 输入java代码如下: public class MainActivity extends ActionBarActivity { EditText editText1; double num1 = 0,num2 = 0; String temp = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText1 = (EditText) findViewById(R.id.editText2); } public void butOnClick(View v){ int id = v.getId(); String str = editText1.getText().toString().trim(); switch (id) { case R.id.button1: editText1.setText(str + "7"); break; case R.id.button2: editText1.setText(str + "8"); break; case R.id.button3: editText1.setText(str + "9"); break; case R.id.button4: editText1.setText(str + "*"); break; case R.id.button5: editText1.setText(str + "4"); break; case R.id.button6: editText1.setText(str + "5"); break; case R.id.button7: editText1.setText(str + "6"); break; case R.id.button8: num1=Double.parseDouble(str); temp="-"; editText1.setText(" "); break; case R.id.button9: editText1.setText(str + "3"); break; case R.id.button10: editText1.setText(str + "2"); break; case R.id.button11: editText1.setText(str + "1"); break; case R.id.button12: num1=Double.parseDouble(str); temp="+"; editText1.setText(" "); break; case R.id.button16: Double tempres = 0.0; num2 = Double.parseDouble(str); if(temp.equals("+")) { tempres = Double.valueOf(num1 + num2); } if(temp.equals("-")) { tempres = Double.valueOf(num1 - num2); } String result = tempres.toString(); if(temp.equals("*")) { tempres = Double.valueOf(num1 * num2); } editText1.setText(result); if(temp.equals("/")) { tempres = Double.valueOf(num1 / num2); } break; case R.id.button15: editText1.setText(str + "/"); break; case R.id.button13: editText1.setText(str + "0"); break; case R.id.button14:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值