关于Java

的底层一直想写点什么,但是好像很多问题在网上还是可以找得到答案,最后还是决定写出来,一来可以让自己重温一下,二来可以和大家一起深入探讨底层的知识。这里面还有一些常见的小问题,也附带在里面的原因,framework

其实也是构建在这些知识的基础上的。

论一:数值论

问题一:java.math

中两个很强大的类:BigInteger

和BigDecimal

这两个类可以处理任意长度的数值。为什么说他们强大?就是因为它们的作用强大。

代码1

:System.out.println(2.0-1.1); //

结果:0.899999999

为什么不是我们认为的0.9

答案是:对于浮点数计算,浮点数本身采用二进制表示,所以无法表示1/10

,就如同十进制无法精确表示浮点数一样,就会出现四舍五入的误差。

如何防止这种误差?

有办法。你可以尝试:

代码2

BigDecimal.valueOf(2.0).subtract(BigDecimal.valueOf(1.1));

//

结果:0.9

注意到了嘛,BigInteger

和BigDecimal

不适用算术符号,而适用方法,如add,subtract,multiply,divide,mod

重要方法:valueOf,

返回大整数或大浮点数。compareTo(BigX)

比较

问题二:浮点数中的特殊数值

浮点数有两种:单精度(float

)和双精度(double

)。

它们区别:1.float

精度不高,double

精度是它的一倍。 2.float

数值后有”f”,

没有默认是double

类型数值。

言归正传,特殊值是:正无穷大、负无穷大、NaN.

定义如下:

正无穷大:正整数除以0

的结果。负无穷大不用说了吧^^!

NaN:

0/0

或 负数的平方根。

Double.POSITIVE_INFINITY

Double.NEGATIVE_INFINITY

Double.NaN

如何判断一个数是否是NaN?

if(x

== Double.NaN)

错误

if(Double.isNaN(x))

正确

原因是:所有“非数值”的值都认为不相等。

问题三:java

数组的copy

在Java

中数组是可以copy

的哦,可以通过如下语法:

System.arraycopy(fromArray,fromIndex,toArray,toIndex,count)

问题四:如何得到一个0—n-1

之间的随机数?

Math.random()*n

//

分析:Math.random

得到0—1

之间随机数,不包含1

,包含0.

问题五:二分法查找对于学过算法的人并不陌生,数组中为我们提供现成的方法了?是的。

int val = Array.binarySearch(array[],v);

参数说明:arr

Java深入研究_Java底层深入研究(一)相关推荐

  1. java链表集合_Java底层基于链表实现集合和映射--集合Set操作详解

    本文实例讲述了Java底层基于链表实现集合和映射--集合Set操作.分享给大家供大家参考,具体如下: 在Java底层基于二叉搜索树实现集合和映射中我们实现了底层基于二叉搜索树的集合,本节就底层如何基于 ...

  2. java类加载器_java底层内功 第一章,类加载器的任性

    java类是怎么加载的? 类加载机制 JVM主要包含三大核心部分:类加载器,运行时数据区和执行引擎. 虚拟机将描述类的数据从class文件加载到内存,并对数据进行校验,准备,解析和初始化,最终就会形成 ...

  3. 物流配送系统设计java,基于Java的物流配送中心系统仿真模块研究与设计

    基于Java的物流配送中心系统仿真模块研究与设计摘要:本文选取物流工程中的配送中心作为研究对象,根据实际需要建立了离散事件系统模型,并按照事件安排和时间推进的机制采用java程序设计语言设计仿真模块. ...

  4. Java并发机制的底层实现原理

    Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令.本章我们将 ...

  5. java类结构工具_java类层次结构图工具

    Java主类结构_计算机软件及应用_IT/计算机_专业资料.Java主类结构 谢谢大家! Java主类结构 谢谢大家! +申请认证 文档贡献者 胸兢谙韶硛蠌 中西医 59981 ...... 知识结构 ...

  6. java一对一关系_Java初学者疑难杂症之:一对一和一对多的关系

    [威哥说]作为一个程序员,我们每天都在"搞"对象,额,"用"对象,感觉那个词都不太好,还是继续向下说,对象之间的关系有的是一对一的,也有一对多的(现实中有才好) ...

  7. java 股票交易系统_JAVA程序实现股票交易系统设计

    内容介绍 原文档由会员 莎士比亚 发布 资源包括:正文DOC格式共37页 9911字 摘要:本文按照开发软件工程的思路,主要从以下几个方面详细论述了股票交易系统的研究和设计:GUI模块设计.JDBC的 ...

  8. java eclipse参考文献_java毕设论文参考文献.doc

    java毕设论文参考文献.doc [一]1 孙卫琴Tomcat与Java Web开发技术详解(第2版)M北京电子工业出版社,20092 陈雄华Spring企业级应用开发详解M北京电子工业出版社,200 ...

  9. Java市场调研_Java开源电商系统的市场调研怎么做

    java开源电商系统的建设是离不开对市场的调研的,因为市场调研是java电商系统制作运营计划的基础.那么一个java开源商城系统该如何做好市场调研呢? Java电商系统为什么要进行市场调研 Java电 ...

最新文章

  1. 穿了个GUI马甲的PyInstaller
  2. petshop 出现没有为 SQL 缓存通知启用数据库“MSPetShop4”
  3. “百亿补贴”真的能拯救一切吗?
  4. 【SSL】SSL工作原理
  5. Myeclipse8.5 反编译插件 jad 安装
  6. 为什么机器学习很难学习因果关系?
  7. Tomcat运行流程
  8. 别总抱怨自己怀才不遇,告诉你将才与帅才的12个差别!
  9. phoneGap、JQueryMobile 简介及中文API地址
  10. lua 垃圾回收机制
  11. CorelDRAWX4的VBA插件开发(五) 一键转曲
  12. 手写识别是图像识别吗_创建日语手写识别器
  13. 3.破解百度翻译 输入keyWord返回对应翻译的数据
  14. 仅需三个步骤,即可将wps转换成word
  15. P、NP、NPC问题
  16. JVisualVM、Visual GC
  17. Windows批处理脚本(BAT,CMD)简明教程
  18. mysql delete using,MySQL delete from database where
  19. 有关英文单词中间有空格问题的解决
  20. 小米8 android p 公测,小米8 Android P内测9月开启

热门文章

  1. python判断正负零_【译】格式字符串语法
  2. 用友政务知识管理平台_云创数字政务大数据平台,助力政务工作高效管理
  3. C++之继承探究(七):虚析构函数
  4. mysql 查看collation_MySQL collation方法
  5. antd picker 使用 如何_如何基于jsoneditor二次封装一个可实时预览的json编辑器组件?(react版)...
  6. php 取得user_agent,php通过$_SERVER['HTTP_USER_AGENT']获取浏览器相关参数(转)
  7. mysql parameters_MySqlCommand Command.Parameters.Add已过时?mysql-问答-阿里云开发者社区-阿里云...
  8. python 编辑视频_python也能玩视频剪辑!moviepy操作记录总结
  9. html pre标签增加行号,vue使用highlight.js 添加行号
  10. netty半包粘包 处理_老王:Netty到底是个什么鬼?有没有简单的理解方式?