int与integer的区别
点此处链接:https://blog.csdn.net/zjfahs/article/details/90138277
BigInteger
import java.math.BigInteger;
public class Object{
public static void main(String[] args) {
BigInteger bi = new BigInteger("12345678912345678");
System.out.println(bi.longValue());
/*
*转换为byte:byteValue()
转换为short:shortValue()
转换为int:intValue()
转换为long:longValue()
转换为float:floatValue()
转换为double:doubleValue()*/
// 使用longValueExact()方法时,如果超出了long型的范围,会抛出ArithmeticException
System.out.println(bi.multiply(bi).longValueExact());
}
}
// 总结
/*
BigInteger用于表示任意大小的整数;
BigInteger是不变类,并且继承自Number;
将BigInteger转换成基本类型时可使用longValueExact()等方法保证结果准确。
*/
BigDecimal
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Object{
public static void main(String[] args) {
BigDecimal d1 = new BigDecimal("123.4567");
BigDecimal d2 = new BigDecimal("12.3400");
BigDecimal d3 = d2.stripTrailingZeros(); // 去掉d2后面的两个0
System.out.println(d1.scale()); // 4 .scale()打印小说点后面的位数
System.out.println(d1.multiply(d1)); // 15241.55677489
System.out.println(d2.scale()); // 4
System.out.println(d3.scale()); // 2
// 如果是12300 去掉后面两个零 显示-2
BigDecimal d4 = d1.divide(d2,10, RoundingMode.HALF_UP); // d1除d2保留10位小数
System.out.println(d4);
// 还能求余
BigDecimal n = new BigDecimal("12.345");
BigDecimal m = new BigDecimal("0.12");
BigDecimal[] dr = n.divideAndRemainder(m);
System.out.println(dr[0]); // 102.0
System.out.println(dr[1]); // 0.105
BigDecimal d5 = new BigDecimal("123.456");
BigDecimal d6 = new BigDecimal("123.45600");
System.out.println(d5.equals(d6)); // false,因为scale不同
System.out.println(d5.equals(d6.stripTrailingZeros()));
// true ,因为d6去除尾部0后scale变为3
System.out.println(d5.compareTo(d6)); // 0
// 两个值的大小分别返回负数、正数和0,分别表示小于、大于和等于
}
}
// 比较BigDecimal的值是否相等,必须使用compareTo()而不能使用equals()。
Math
求绝对值:
Math.abs(-100); // 100
Math.abs(-7.8); // 7.8
取最大或最小值:
Math.max(100, 99); // 100
Math.min(1.2, 2.3); // 1.2
计算xy次方:
Math.pow(2, 10); // 2的10次方=1024
计算√x:
Math.sqrt(2); // 1.414...
计算ex次方:
Math.exp(2); // 7.389...
计算以e为底的对数:
Math.log(4); // 1.386...
计算以10为底的对数:
Math.log10(100); // 2
三角函数:
Math.sin(3.14); // 0.00159...
Math.cos(3.14); // -0.9999...
Math.tan(3.14); // -0.0015...
Math.asin(1.0); // 1.57079...
Math.acos(1.0); // 0.0
Math还提供了几个数学常量:
double pi = Math.PI; // 3.14159...
double e = Math.E; // 2.7182818...
Math.sin(Math.PI / 6); // sin(π/6) = 0.5
Random
// Random:生成伪随机数
Random r = new Random();
r.nextInt(); // 2071575453,每次都不一样
r.nextInt(10); // 5,生成一个[0,10)之间的int
r.nextLong(); // 8811649292570369305,每次都不一样
r.nextFloat(); // 0.54335...生成一个[0,1)之间的float
r.nextDouble(); // 0.3716...生成一个[0,1)之间的double
import java.util.Random;
public class Object{
public static void main(String[] args) {
Random r = new Random(12345); // seed种子
// 如果我们在创建Random实例时指定一个种子,就会得到完全确定的随机数序
for (int i = 0;i <= 10; i++){
System.out.println(r.nextInt(100));
}
}
}
SecureRandom
// SecureRandom:生成安全的随机数
import java.security.SecureRandom;
public class Object{
public static void main(String[] args) {
SecureRandom sr = new SecureRandom();
System.out.println(sr.nextInt(100));
}
}