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型的范围,会抛出ArithmeticExceptionSystem.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后面的两个0System.out.println(d1.scale()); // 4 .scale()打印小说点后面的位数System.out.println(d1.multiply(d1)); // 15241.55677489System.out.println(d2.scale()); // 4System.out.println(d3.scale()); // 2// 如果是12300 去掉后面两个零 显示-2BigDecimal 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.0System.out.println(dr[1]); // 0.105BigDecimal 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变为3System.out.println(d5.compareTo(d6)); // 0// 两个值的大小分别返回负数、正数和0,分别表示小于、大于和等于}}// 比较BigDecimal的值是否相等,必须使用compareTo()而不能使用equals()。
Math
求绝对值:
Math.abs(-100); // 100Math.abs(-7.8); // 7.8
取最大或最小值:
Math.max(100, 99); // 100Math.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)之间的intr.nextLong(); // 8811649292570369305,每次都不一样r.nextFloat(); // 0.54335...生成一个[0,1)之间的floatr.nextDouble(); // 0.3716...生成一个[0,1)之间的doubleimport 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));}}
