Math及相关类

Math这个类在java中是一个与数学相关的类。位于java.lang包下。

Math的构造方法是私有的,我们不能直接调用来创建对象。

而且Math中的属性跟方法都是static的,不需要创建对象。

常用方法自己通过api文档了解。

值得说一下的是Math中有一个random()方法,返回一个随机数,范围是[0-1)。

但我们如果想要0-9之间的随机数,那么可以这样,int value=(int)Math.random()*10;

如果想要5.0-10.9之间的随机小数,可以这样,(Math.random()*6)+5,random()的范围是0-0.99999...那么范围就是(0.0-5.999994...)+5

但发现一个问题,计算小数时可能会丢失精度。

  这个时候可以考虑另外一个类专门处理随机数的Random类,

常用一些方法,

Random r=new Random();
r.nextInt();随机产生int类型取值范围的整数,有负数有正数。

r.nextInt(10);带参数可以指定范围,[0-10)之间的整数,包含0取不到10,左闭右开。

r.nextFloat();随机产生一个[0.0-1.0)的小数

r.nextBoolean();随机产生true,false

等等。

取5.0-10.9的随机数就可以这样,float f=(r.nextInt(6)+5)+r.nextFloat();[0.0--5.0]+5-->[0.0--10.0]+[0.0--0.9999..)即[5.0--10.999..)

  UUID类

UUID uuid=UUID.randomUUID();//创建对象
System.out.println(uuid.toString());//随机产生一个32位的每位是16进制的数字,一般用作表格主键

  BigInteger类

你是否有疑问,我们学习的基本数据类型,取值范围最大的long -2的63次方~2的63次方-1.那么如果我们万一需要超过这个范围的值该怎么办。

这个时候可以考虑BigInteger类,这个类底层采用的动态的数组,总之就是可以。

位于java.math包,继承Number类,它提供的构造方法都是带参数的,我们一般带String参数进行构造

//例子,设计一个方法,计算阶乘,如果这个数太大,long可能存不下,5:1x2x3x4x5 120
	private static BigInteger factorial(int num){
		BigInteger result=new BigInteger("1");
		for(int i=1;i<=num;i++){
			result=result.multiply(new BigInteger(i+""));
		}
		
		return result;
	}

  如果num参数传一个25,那么你会发现得到的结果远远超过long的范围。

猜你喜欢

转载自www.cnblogs.com/hebiao/p/12730207.html