int与integer的区别

点此处链接:https://blog.csdn.net/zjfahs/article/details/90138277

BigInteger

  1. import java.math.BigInteger;
  2. public class Object{
  3. public static void main(String[] args) {
  4. BigInteger bi = new BigInteger("12345678912345678");
  5. System.out.println(bi.longValue());
  6. /*
  7. *转换为byte:byteValue()
  8. 转换为short:shortValue()
  9. 转换为int:intValue()
  10. 转换为long:longValue()
  11. 转换为float:floatValue()
  12. 转换为double:doubleValue()*/
  13. // 使用longValueExact()方法时,如果超出了long型的范围,会抛出ArithmeticException
  14. System.out.println(bi.multiply(bi).longValueExact());
  15. }
  16. }
  17. // 总结
  18. /*
  19. BigInteger用于表示任意大小的整数;
  20. BigInteger是不变类,并且继承自Number;
  21. 将BigInteger转换成基本类型时可使用longValueExact()等方法保证结果准确。
  22. */

BigDecimal

  1. import java.math.BigDecimal;
  2. import java.math.RoundingMode;
  3. public class Object{
  4. public static void main(String[] args) {
  5. BigDecimal d1 = new BigDecimal("123.4567");
  6. BigDecimal d2 = new BigDecimal("12.3400");
  7. BigDecimal d3 = d2.stripTrailingZeros(); // 去掉d2后面的两个0
  8. System.out.println(d1.scale()); // 4 .scale()打印小说点后面的位数
  9. System.out.println(d1.multiply(d1)); // 15241.55677489
  10. System.out.println(d2.scale()); // 4
  11. System.out.println(d3.scale()); // 2
  12. // 如果是12300 去掉后面两个零 显示-2
  13. BigDecimal d4 = d1.divide(d2,10, RoundingMode.HALF_UP); // d1除d2保留10位小数
  14. System.out.println(d4);
  15. // 还能求余
  16. BigDecimal n = new BigDecimal("12.345");
  17. BigDecimal m = new BigDecimal("0.12");
  18. BigDecimal[] dr = n.divideAndRemainder(m);
  19. System.out.println(dr[0]); // 102.0
  20. System.out.println(dr[1]); // 0.105
  21. BigDecimal d5 = new BigDecimal("123.456");
  22. BigDecimal d6 = new BigDecimal("123.45600");
  23. System.out.println(d5.equals(d6)); // false,因为scale不同
  24. System.out.println(d5.equals(d6.stripTrailingZeros()));
  25. // true ,因为d6去除尾部0后scale变为3
  26. System.out.println(d5.compareTo(d6)); // 0
  27. // 两个值的大小分别返回负数、正数和0,分别表示小于、大于和等于
  28. }
  29. }
  30. // 比较BigDecimal的值是否相等,必须使用compareTo()而不能使用equals()。

Math

求绝对值:

  1. Math.abs(-100); // 100
  2. Math.abs(-7.8); // 7.8

取最大或最小值:

  1. Math.max(100, 99); // 100
  2. Math.min(1.2, 2.3); // 1.2

计算xy次方:

  1. Math.pow(2, 10); // 2的10次方=1024

计算√x:

  1. Math.sqrt(2); // 1.414...

计算ex次方:

  1. Math.exp(2); // 7.389...

计算以e为底的对数:

  1. Math.log(4); // 1.386...

计算以10为底的对数:

  1. Math.log10(100); // 2

三角函数:

  1. Math.sin(3.14); // 0.00159...
  2. Math.cos(3.14); // -0.9999...
  3. Math.tan(3.14); // -0.0015...
  4. Math.asin(1.0); // 1.57079...
  5. Math.acos(1.0); // 0.0

Math还提供了几个数学常量:

  1. double pi = Math.PI; // 3.14159...
  2. double e = Math.E; // 2.7182818...
  3. Math.sin(Math.PI / 6); // sin(π/6) = 0.5

Random

  1. // Random:生成伪随机数
  2. Random r = new Random();
  3. r.nextInt(); // 2071575453,每次都不一样
  4. r.nextInt(10); // 5,生成一个[0,10)之间的int
  5. r.nextLong(); // 8811649292570369305,每次都不一样
  6. r.nextFloat(); // 0.54335...生成一个[0,1)之间的float
  7. r.nextDouble(); // 0.3716...生成一个[0,1)之间的double
  8. import java.util.Random;
  9. public class Object{
  10. public static void main(String[] args) {
  11. Random r = new Random(12345); // seed种子
  12. // 如果我们在创建Random实例时指定一个种子,就会得到完全确定的随机数序
  13. for (int i = 0;i <= 10; i++){
  14. System.out.println(r.nextInt(100));
  15. }
  16. }
  17. }

SecureRandom

  1. // SecureRandom:生成安全的随机数
  2. import java.security.SecureRandom;
  3. public class Object{
  4. public static void main(String[] args) {
  5. SecureRandom sr = new SecureRandom();
  6. System.out.println(sr.nextInt(100));
  7. }
  8. }