当前位置: 首页 > news >正文

日本做设计的网站有哪些方面seo关键词排名优化手机

日本做设计的网站有哪些方面,seo关键词排名优化手机,网站重构工程师,电脑做会计从业题目用什么网站本篇是源码分析的第二篇,上篇我们一起分析了Integer类的源码,本篇一起学习下Double类的源码,看下其实现。 一、Double类图 首先,相比Integer,Double类的源码只有1000行代码。如下是Integer及其关联类/接口的类图&#…

    本篇是源码分析的第二篇,上篇我们一起分析了Integer类的源码,本篇一起学习下Double类的源码,看下其实现。

 

一、Double类图

    首先,相比Integer,Double类的源码只有1000+行代码。如下是Integer及其关联类/接口的类图:

     通过Integer类的类图,我们总结下它的特点:

  • Double类继承自抽象类Number
  • Double类实现了Comparable接口
  • Double类使用final修饰,因此不可以有子类(不能被继承)

二、String转Double

    同Integer类似,在实际工作中,我们用的比较多的,仍然是String转Double。Java也是给我们提供了两个方法:

1、Double.parseDouble

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

    可以看到,parseDouble并非在Double类中实现的,而是借助FloatingDecimal类去实现:

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

    readJavaFormatString方法返回ASCIIToBinaryConverter:

static ASCIIToBinaryConverter readJavaFormatString( String in ) throws NumberFormatException {...}

    而ASCIIToBinaryConverter接口有两个方法,分别是doubleValue()和floatValue(),显而易见,分别是转double和转float的方法:

   interface ASCIIToBinaryConverter {double doubleValue();float floatValue();}

2、Double.valueOf

    另一种方法是Double.valueOf,需要注意的是,valueOf每次都是new一个Double,也就是一个新的对象。

    public static Double valueOf(String s) throws NumberFormatException {return new Double(parseDouble(s));}

    为什么Double不像Integer搞个缓存呢?浮点数不像整型,比如1和2之间就有无数个浮点数,那么又如何去实现类似IntegerCache的缓存呢?显然是不现实的! 

三、isNaN

    需要注意的一点,Double内部定义了一个非法的double值,即NaN:

    /*** A constant holding a Not-a-Number (NaN) value of type* {@code double}. It is equivalent to the value returned by* {@code Double.longBitsToDouble(0x7ff8000000000000L)}.*/public static final double NaN = 0.0d / 0.0;

     相应的,在很多情况下,确实会产生NaN的double值,因此在使用一个double值做一些运算时,记得使用Double.isNaN去判断下该非法值并做相应的异常处理:

    /*** Returns {@code true} if the specified number is a* Not-a-Number (NaN) value, {@code false} otherwise.** @param   v   the value to be tested.* @return  {@code true} if the value of the argument is NaN;*          {@code false} otherwise.*/public static boolean isNaN(double v) {return (v != v);}

    如下代码示例:

    public static void main(String[] args) {String s = "NaN";double d = 0d;try {d = Double.parseDouble(s);} catch (NumberFormatException e) {System.out.println(e.getMessage());return;}if (Double.isNaN(d)) {System.out.println(d);return;}d = d * 2.0d;System.out.println(d);}

四、一道题目

    那么,看下这道题目输出是什么呢?

public class DoubleTest {public static void main(String[] args) {Double d1 = 100d;Double d2 = 100d;System.out.println(d1 == d2);}
}

    答案是false。原因则是上面提到的,valueOf每次都是new一个Double对象。 

    相比Integer的源码,Double源码相对简单一些。但是需要特别注意使用double时isNaN的判断,否则程序可能产生意想不到的错误。

http://www.hkea.cn/news/563728/

相关文章:

  • 水果网站开发所需的成本市场营销实际案例
  • 无锡市新吴区住房和建设交通局网站西安百度关键词包年
  • 网站平台方案设计seo上首页
  • 郑州做网站的联系方式搜狗友链交换
  • 一般建设一个网站多少钱怎么接广告赚钱
  • 计算机专业网站开发方向销售推广方案
  • 上海网站建设公司排名西安百度公司
  • 中国网网址是多少网站推广优化教程
  • 关于加强机关网站建设运营培训
  • dw做的网站怎么让别人看到如何建立一个网站
  • 保险网站建设优缺点seo代码优化步骤
  • 如何快速建网站百度电脑版入口
  • 山东省建设工程信息网站最近最新的新闻
  • 免费网站建设方案锦绣大地seo官网
  • 电子商务的网站建设牛排seo系统
  • 资源收费网站怎么做网站快速优化排名官网
  • 招标网哪个网站信息可靠百度站长工具网站
  • 郑州七七网站建设互联网推广公司
  • 佛山做外贸网站代理商百度收录技术
  • 公司网站建设需要什么今日热搜第一名
  • 烟台建设企业网站网站快速收录入口
  • 怎么做繁体字网站网络营销公司注册找哪家
  • 做ppt介绍网站吗网站搜索引擎优化工具
  • 深圳网站建设有没有市场百度搜索推广的五大优势
  • 网站建设好的图片百度互联网营销
  • 柳州网站制作公司seo优化什么意思
  • 网站建设做的好的公司淘宝关键词优化怎么弄
  • 手机网站用模版方象科技的企业愿景
  • 沈阳网站建设技术公司排名公司市场营销策划方案
  • 赣州网站建设怎样石家庄最新消息