Java常用类(一)Math类和Random类
一、Math类
Math类中有一些常用的数学函数,比较简单,不进行详细解释,仅举例说明:
1.绝对值和取整
import java.lang.Math;
public class Mat {
public static void main(String []args)
{
//abs()返回绝对值
System.out.println(Math.abs(-2.5)); //ceil()返回较大的整数
System.out.println(Math.ceil(-2.6));
System.out.println(Math.ceil(2.3)); //floor()返回较大的整数
System.out.println(Math.floor(-2.6));
System.out.println(Math.floor(2.8)); } }
几个要素:Math类在java.lang包中;Math类中基本都是静态方法,不可声明类对象。
结果:
2.5
-2.0
3.0
-3.0
2.0
abs返回同参数类型,floor和ceil参数和返回值均为double类型。
2.四舍五入
// //round()返回四舍五入值 等价floor(x+0.5)
System.out.println(Math.round(-11.5));
System.out.println(Math.round(-11.501));
System.out.println(Math.round(11.499));
System.out.println(Math.round(11.5)); //rint()四舍五入 0.5返回偶数
System.out.println(Math.rint(3.5));
System.out.println(Math.round(3.5));
System.out.println(Math.rint(4.5));
System.out.println(Math.round(4.5));
-11
-12
11
12
4.0
4
4.0
5
rint()参数是double型,返回的也是double型;round()参数为float返回int型,参数为double型返回long型
3.随机数
//random()返回[0.0,1.0)之间的随机数
System.out.println(Math.random());
//random()返回[0.0,100.0)之间的随机数
System.out.println(Math.random()*100);
//random()返回[2.0,100.0)之间的随机数
System.out.println(2+(Math.random()*98));
//random()返回[2.0,100.0)之间的整数
System.out.println((int)(2+(Math.random()*98)));

4.最大最小值
//max()返回两个数中较大的,min()返回较小的数字
System.out.println(Math.max(2,3));
System.out.println(Math.min(-2,-3));
//max和min不仅适用于int,还适用float,double,long
System.out.println(Math.max(2.5,2.55));
System.out.println(Math.min(-2.3,-3));
//实现三个数
System.out.println(Math.max(2.5,Math.max(-3,2.6)));

5.三角函数
System.out.println(Math.sin(Math.PI));
System.out.println(Math.cos(Math.PI));
System.out.println(Math.tan(Math.PI/4));

可以看出结果并不准确,这是因为PI和E在Math中的定义是:
/**
* The {@code double} value that is closer than any other to
* <i>e</i>, the base of the natural logarithms.
*/
public static final double E = 2.7182818284590452354; /**
* The {@code double} value that is closer than any other to
* <i>pi</i>, the ratio of the circumference of a circle to its
* diameter.
*/
public static final double PI = 3.14159265358979323846;
此外还有反三角函数asin(),acos(),atan()以及双曲三角函数sinh,cosh,tanh; toDegrees弧度转角度,toRadians角度转弧度。
6.指数对数
//指数 exp(x) - e^x
System.out.println(Math.exp(1)-Math.E);
//指数 expm1(x) - e^x-1
System.out.println(Math.expm1(2)+1-Math.exp(2));
//指数 pow(x,y) - e^x-1
System.out.println(Math.pow(2,3));
//对数 log(x) - ln(x)
System.out.println(Math.log(Math.E));
//对数 log10(x) - lg(x)
System.out.println(Math.log10(100));
//对数 log1p(x) - ln(x+1)
System.out.println(Math.log1p(0));
//指数 scalb(x,y) - x*2^y
System.out.println(Math.scalb(12,2));

scalb第二个参数只能是整数,第一个是float和double类型
7.开平方立方
// sqrt(x) 开平方
System.out.println(Math.sqrt(16.1)); //cbrt(x) 开立方
System.out.println(Math.cbrt(64.2)); //hypot(x,y) - x^2+y^2
System.out.println(Math.hypot(3,4));

8.符号相关
//signum(x) x>0返回1.0;x<0返回-1.0;x=0返回0.0
System.out.println(Math.signum(0));
System.out.println(Math.signum(-0));
System.out.println(Math.signum(-0.0));
System.out.println(Math.signum(-0.1)); //copySign(x,y)将x的绝对值配上y的符号
System.out.println(Math.copySign(-12.63,0));
System.out.println(Math.copySign(12.63,-0));
System.out.println(Math.copySign(12.63,-0.0));

经过我自己的实验,可以看出,在java中0和-0均视为0整数处置,而0.0和-0.0却有正负差异。
二、Random类
除了Math类可以生成随机数之外,还有更加专业的Random类可以使用,Random有两种构造方法,分别是无参构造函数,以long为参数的构造方法。即:
Random r1=new Random();
Random r2=new Random(long seed);
等下我们在介绍两种构造函数的区别,在此之前要先介绍产生随机数的方法,想必还记得包装类,除了Character、Short、Byte之外,所有类型都可以使用Random类产生:
nextInt() //产生一个随机整数
nextInt(int n) //产生一个大于等于0小于n的整数
nextFloat() //产生一个浮点数
nextDouble() //
nextLong() //产生一个长整数
nextBoolean() //产生一个布尔值
public static void main(String []args)
{
Random r= new Random();
for (int i=0;i<10;i++)
System.out.println(r.nextInt(100)); //参数为负抛出IllegalArgumentException }
第一次运行结果: 第二次运行结果:

也即没有种子作为构造参数,那么每次产生数都不尽相同。
重新试一下有种子的Random类构造参数:

每次产生的数据就一样了。
那么产生随机负数怎么办,加上负号就好了啊。(咦,怎么绿了?)
Java常用类(一)Math类和Random类的更多相关文章
- Scanner类、匿名对象、Random类、ArrayList集合、String类、static静态类、math类和Arrays工具类
一.Scanner类 1.除了八种基本数据类型,其他都是引用类型: 引用类型使用三步骤: 2.Scanner类 引用jdk提供的类,Scanner在java.util包下,不在java.lang包(S ...
- 【代码笔记】Java常识性基础补充(一)——赋值运算符、逻辑运算符、三元运算符、Scanner类、键盘输入、Random类、随机数
为什么要进行Java常识性基础补充? 之前学习Java语言,学得很多很杂,而且是很多不同的方面插入讲解的,比如在跟班上课,自学java编程例子,java语法,过了很久,因为各种原因长时间不怎么写,有时 ...
- Java常用API及Math类
一.API的概述 API——Application Programing Interface:应用程序编程接口,是java提供的一些预定义的函数: 目的:基于API实现程序的快速编写,只需了解其作用, ...
- Java常用API、Math类介绍
一.API的概述 API——Application Programing Interface:应用程序编程接口,是java提供的一些预定义的函数: 目的:基于API实现程序的快速编写,只需了解其作用, ...
- GOF 的23种JAVA常用设计模式总结 02 UML中的类图与类图之间的关系
统一建模语言UML 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际 ...
- java 常用类库:格式化NumberFormat;SimpleDataFormat类(转换Data()对象);DateTimeFormatter 转换LocalDateTime时间对象
NumberFormat类 该类是一个做数字格式化的类,它是一个抽象类,无法实例化.它提供了parse()和format()方法,其中format用于将数值,格式转化成字符串,parse()用于把字符 ...
- java 常用类库:String ; StringBuilder和StringBuffer类
1. String 1.String对象是不可变的 String类的value属性是用来存放字符串里面的值的.这个属性是被final修饰的.final修饰的变量不能够被第二次赋值,所以字符串是不可变的 ...
- java 常用类库:Math:常用min、max;floor;ceil;random;
Math //7.取整数小于目标的最大整数(Math.floor(1.2));//8.取整数.获取大于目标的最大整数System.out.println(Math.ceil(1.2)); //18.获 ...
- Java——Random类随机整数---18.10.11
一.Random类的定义 1.Random类位于java.util包中,主要用于生成 伪随机数 2.random类将 种子数 作为随机算法的起源数字,计算生成伪随机数,其与生成的随机数字的区间无关 3 ...
- ☠全套Java教程_Java基础入门教程,零基础小白自学Java必备教程👾#010 #第十单元 Scanner类、Random类 #
一.本单元知识点概述 (Ⅰ)知识点概述 二.本单元教学目标 (Ⅰ)重点知识目标 1.API的使用2.Scanner类的使用步骤3.Random类的使用 (Ⅱ)能力目标 1.掌握API的使用步骤2.使用 ...
随机推荐
- [Comet OJ - Contest #6 D][48D 2280]另一道树题_并查集
另一道树题 题目大意: 数据范围: 题解: 这个题第一眼能发现的是,我们的答案分成两种情况. 第一种是在非根节点汇合,第二种是在根节点汇合. 尝试枚举在第几回合结束,假设在第$i$回合结束的方案数为$ ...
- PAT B1011 A+B 和 C (15)
AC代码 #include <cstdio> int main() { int T, tcase = 1; scanf("%d", &T); for(int i ...
- Fiddler之常用操作(过滤器设置,代理设置,手机抓包设置,手机代理配置)
记录下,工作中常用的一些设置和操作~ 1.过滤“脏”请求 两个下拉框的名词解释: A.内外网过滤 No Zone Filter:不分区域过滤(内网外网都显示) Show only Intranet H ...
- (转)关于Android中为什么主线程不会因为Looper.loop()里的死循环卡死?引发的思考,事实可能不是一个 epoll 那么 简单。
( 转载请务必标明出处:http://www.cnblogs.com/linguanh/, 本文出自:[林冠宏(指尖下的幽灵)的博客]) 前序 本文将会把一下三个问题阐述清楚以及一个网上的普遍观点的补 ...
- 作业7:常用java命令(一)
一.Javac(java compiler) 1.功能:javac是一种前端编译器,负责将源代码转换为字节码. 2.例子 (1)代码 public class TestJavac { static c ...
- C#.net开发 List与DataTable相互转换
1.DataTable转List集合 /// <summary> /// DataTable转化为List集合 /// </summary> /// <typeparam ...
- C#面向对象10 继承
1.继承: **** 我们可能会在一些类中,写一些重复的成员.我们可以将这些重复的成员,单独的封装到一个类中,作为这些类的父类. Student,Teacher,Driver ----子类 派生类 ...
- 服务端相关知识学习(二)之Zookeeper可以干什么
Zookeeper主要可以干哪些事情 配置管理,名字服务,提供分布式同步以及集群管理.那这些服务又到底是什么呢?我们为什么需要这样的服务?我们又为什么要使用Zookeeper来实现呢,使用Zookee ...
- O035、Nova Suspend / Rescue 操作详解
参考https://www.cnblogs.com/CloudMan6/p/5503501.html Suspend / Resume 有时候需要长时间暂停 instance , 可以通过 S ...
- 解决VS2015 不能设置下面的断点**** 断点未能绑定
解决VS2015 不能设置下面的断点**** 断点未能绑定 1. 清理解决方案 , 重新生成解决方案 , 无效!! 2. 选项-- 调试 -- 启用编辑并继续 无效!! 3. 启 ...