服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - Java详细讲解Math和Random类中有哪些常用方法

Java详细讲解Math和Random类中有哪些常用方法

2022-12-09 15:17星辰与晨曦 Java教程

Math类位于java.lang包中,包含很多用于科学计算的类方法,这些方法可以直接通过类名调用。Random类获取随机数,位于java.util包中,本篇带你了解它们的常用方法

java.lang.Math当中提供了一系列的静态方法用于科学计算;其方法的参数和返回值的类型一般为double型。

下来我就简单的介绍一下Math类中常用的方法。

public static int abs(double a) 求绝对值

public static double sqrt(double a) 求平方根

public static double pow(double a, double b) 求a的b次幂

public static double max(double a, double b) 求a和b那个大

public static double min(double a, double b) 求a和b那个小

public static long round(double a) 将a四舍五入返回lang型

public static double floor(double a) 返回小于或等于参数的最大整数,数据类型为double型

public static double ceil(double a) 返回大于或等于参数的最大整数,数据类型为double型

public static double random() 返回一个double值为正号,大于等于0.0 ,小于1.0

代码演示一下上面的方法:

public class Demo01 {
  public static void main(String[] args) {
      System.out.println("求-3的绝对值为:" + Math.abs(-3));
      System.out.println("求4的平方根为:" + Math.sqrt(4));
      System.out.println("求2的3次方幂为:" + Math.pow(2, 3));
      System.out.println("求2和3的最大值为:" + Math.max(2, 3));
      System.out.println("求2和3的最小值为:" + Math.min(2, 3));
      System.out.println("求9.87向下转型的数为:" + Math.floor(9.87));
      System.out.println("求9.12向上转型的数为:" + Math.ceil(9.12));
      System.out.println("求9.55的四舍五入的值为:" + Math.round(9.55));
      System.out.println("求一个0.0到1.0的随机数(不包括1.0)为:" + Math.random());
  }
}

Java详细讲解Math和Random类中有哪些常用方法

Math类的源码我就不在这做多的展示,因为它底层有体现的话,也非常简单,而且大多都是采用的底层操作系统上的去实现去了。

Random()方法

Random方法是java当中获得随机数的类,调用它对应的方法,可以获得我们想要区间的随机数。

创建随机数的对象:

Random random = new Random();

Random当中的方法并不多,我就在这先演示一下:

import java.util.Random;
public class Demo03 {
  public static void main(String[] args) {
      Random random = new Random();
      //返回整型里任意一个
      System.out.println("nextInt()输出为:"+random.nextInt());
      //返回大于等于0,小于9的任意一个整型
      System.out.println("nextInt(9)输出为:"+random.nextInt(9));
      //返回Boolean型任意一个
      System.out.println("nextBoolean()输出为:"+random.nextBoolean());
      //返回Double当中 0.0和 1.0之间的的任意一个
      System.out.println("nextDouble()输出为:"+random.nextDouble());
  }
}

输出结果:

Java详细讲解Math和Random类中有哪些常用方法

当想生成一个数组的随机数的时候,也可以直接采取调用来实现:

import java.util.Arrays;
import java.util.Random;
public class Demo04 {
  public static void main(String[] args) {
      Random random = new Random();
      byte[] bytes = new byte[5];
      random.nextBytes(bytes);
      System.out.println(Arrays.toString(bytes));
  }
}

Java详细讲解Math和Random类中有哪些常用方法

这些方法具体的实现,都是通过一个叫种子的东西生成的。

在这科普一个小知识点。

Random获得的随机数,并不是真正的随机数,也可以说现在普通用户以及公司是没有办法获得真正的随机数,而Random获得的随机数称为一种伪随机数。想要获得真正的随机数只能通过量子计算机获得。

所以我们选择获得的随机数,大多都是通过当前时间经过一系列复杂的算法,得到一个随机数。 这种复杂的算法我们就称为种子。

所以我们也就可以通过拿到当时生成Random对象时的种子,再传进去,就可以复制出它之前生成的随机数。

现在让我们先看看创建Random时的源码:

Java详细讲解Math和Random类中有哪些常用方法

在Java当中,为了安全性,当然也会提供给我们对应的方法。

我们自己传入种子,不使用Java提供的方法得到,通过自己写的生成随机数。

在这我才给代码演示一下:

public class Demo02 {
  public static void main(String[] args) {
      Random random = new Random(5);
      System.out.println("第一次调用:");
      for (int i = 0; i < 5; i++) {
          System.out.println(random.nextInt());
      }
      random = new Random(5);
      System.out.println("第二次调用:");
      for (int i = 0; i < 5; i++) {
          System.out.println(random.nextInt());
      }
  }
}

Java详细讲解Math和Random类中有哪些常用方法

这是我重读javase基础的一个系列,比起当时初学的时候,现在看问题多了个高度,理解什么也相对轻松一点全面一些。学习起来更加偏向阅读源码底层来看,多为自己几个为什么?

到此这篇关于Java详细讲解Math和Random类中有哪些常用方法的文章就介绍到这了,更多相关Java Math和Random内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/weixin_45970271/article/details/124693237

延伸 · 阅读

精彩推荐
  • Java教程Eclipse中Debug时鼠标悬停不能查看变量值解决办法

    Eclipse中Debug时鼠标悬停不能查看变量值解决办法

    这篇文章主要介绍了Eclipse中Debug时鼠标悬停不能查看变量值解决办法,以及分享了一个简单补全代码的方法,还是比较不错的,需要的朋友可以参考下。...

    坚果核9782021-01-31
  • Java教程Java中详细解析Map接口

    Java中详细解析Map接口

    这篇文章主要介绍了Java8 中 Map 接口的新方法,本文通过代码实例给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    IT刘华强7342021-11-13
  • Java教程使用maven实现redis与idea的连接问题

    使用maven实现redis与idea的连接问题

    这篇文章主要介绍了使用maven实现redis与idea的连接问题,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...

    池鱼i_9382021-10-18
  • Java教程mybatis框架xml下trim中的prefix与suffix等标签的用法

    mybatis框架xml下trim中的prefix与suffix等标签的用法

    这篇文章主要介绍了mybatis框架xml下trim中的prefix与suffix等标签的用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝...

    徐林23333832021-10-07
  • Java教程详解Springboot 注入装配到IOC容器方式

    详解Springboot 注入装配到IOC容器方式

    今天通过实例代码给大家介绍了Springboot 注入装配到IOC容器方式,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,感兴趣的朋友跟随小编一...

    科技发烧爱好者-羊工7192022-03-07
  • Java教程java实现水果超市管理系统

    java实现水果超市管理系统

    这篇文章主要为大家详细介绍了java实现水果超市管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    scropio0zry4512021-03-22
  • Java教程SpringMVC上传文件的三种实现方式

    SpringMVC上传文件的三种实现方式

    本篇文章主要介绍了SpringMVC上传文件的三种实现方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Jackvin7132020-07-20
  • Java教程springboot配合Thymeleaf完美实现遍历功能

    springboot配合Thymeleaf完美实现遍历功能

    Thymeleaf显然是一个开发页面的技术,现在各种前端技术层出不穷,比如现在主流的Vue、React、AngularJS等。这篇文章主要介绍了springboot配合Thymeleaf完美实现遍...

    夜色架构师7532022-01-06