当前位置:网站首页 > 技术博客 > 正文

工具的种类和用途



廖雪峰
资深软件开发工程师,业余马拉松选手。

Java的核心库提供了大量的现成的类供我们使用。本节我们介绍几个常用的工具类。

顾名思义,类就是用来进行数学计算的,它提供了大量的静态方法来便于我们实现数学计算:

求绝对值:

取最大或最小值:

计算xy次方:

计算 :

计算ex次方:

计算以e为底的对数:

计算以10为底的对数:

三角函数:

Math还提供了几个数学常量:

生成一个随机数x,x的范围是:

如果我们要生成一个区间在的随机数,可以借助实现,计算如下:

有些同学可能注意到Java标准库还提供了一个,它提供了和几乎一模一样的方法。这两个类的区别在于,由于浮点数计算存在误差,不同的平台(例如x86和ARM)计算的结果可能不一致(指误差不同),因此,保证所有平台计算结果都是完全相同的,而会尽量针对平台优化计算速度,所以,绝大多数情况下,使用就足够了。

在处理数组时,我们经常需要与十六进制字符串转换,自己写起来比较麻烦,用Java标准库提供的则可以方便地帮我们转换。

要将数组转换为十六进制字符串,可以用方法:

如果要定制转换格式,则使用定制的实例:

从十六进制字符串到数组转换,使用方法:

用来创建伪随机数。所谓伪随机数,是指只要给定一个初始的种子,产生的随机数序列是完全一样的。

要生成一个随机数,可以使用、、、:

有童鞋问,每次运行程序,生成的随机数都是不同的,没看出伪随机数的特性来。

这是因为我们创建实例时,如果不给定种子,就使用系统当前时间戳作为种子,因此每次运行时,种子不同,得到的伪随机数序列就不同。

如果我们在创建实例时指定一个种子,就会得到完全确定的随机数序列:

前面我们使用的实际上内部调用了类,所以它也是伪随机数,只是我们无法指定种子。

有伪随机数,就有真随机数。实际上真正的真随机数只能通过量子力学原理来获取,而我们想要的是一个不可预测的安全的随机数,就是用来创建安全的随机数的:

无法指定种子,它使用RNG(random number generator)算法。JDK的实际上有多种不同的底层实现,有的使用安全随机种子加上伪随机数算法来产生安全的随机数,有的使用真正的随机数生成器。实际使用的时候,可以优先获取高强度的安全随机数生成器,如果没有提供,再使用普通等级的安全随机数生成器:

的安全性是通过操作系统提供的安全的随机种子来生成随机数。这个种子是通过CPU的热噪声、读写磁盘的字节、网络流量等各种随机事件产生的“熵”。

在密码学中,安全的随机数非常重要。如果使用不安全的伪随机数,所有加密体系都将被攻破。因此,时刻牢记必须使用来产生安全的随机数。

Java提供的常用工具类有:

  • Math:数学计算
  • HexFormat:格式化十六进制数
  • Random:生成伪随机数
  • SecureRandom:生成安全的随机数

版权声明


相关文章:

  • 数字图像基本处理实验2024-11-08 22:29:59
  • html框架技术2024-11-08 22:29:59
  • 黑客软件 黑客工具箱2024-11-08 22:29:59
  • 思科模拟器3560交换机2024-11-08 22:29:59
  • java匿名类和匿名内部类2024-11-08 22:29:59
  • 大小端区别2024-11-08 22:29:59
  • opencvfindcontours2024-11-08 22:29:59
  • vs2010断点调试2024-11-08 22:29:59
  • 小米手机解锁bootloader教程2024-11-08 22:29:59
  • c 三维数组2024-11-08 22:29:59