Java学习笔记26(Math类、Arrays类、BigInteger类、BigDecimal类)
Math类:数学工具类,做一些数学计算,开方,对数,三角函数等
所有方法都是静态方法,不需要建立对象,直接用类名调用即可
示例:
这里写几个在日常开发中会用到的,比如三角函数之类的平时不会用到,了解即可
package demo; public class MathDemo { public static void main(String[] args) { function1(); function2(); function3(); function4(); function5(); } public static void function1() { int i = Math.abs(-9); System.out.println(i); // 输出:9,求绝对值 } public static void function2() { double d1 = Math.floor(6.5); double d2 = Math.ceil(6.5); System.out.println(d1);// 6.0 System.out.println(d2);// 7.0 } public static void function3() { double d1 = Math.pow(2.0, 3.0); System.out.println(d1); // 2的3次方,输出:8.0 double d2 = Math.sqrt(4.0); System.out.println(d2); // 4开发,输出2.0 } public static void function4() { for (int i = 0; i < 10; i++) { double d = Math.random(); System.out.println(d); //打印随机数,介于0到1 } } public static void function5() { double d = Math.round(1.4234); System.out.println(d); //输出1.0,得到四舍五入值 } }
Arrays类:数组工具类,帮助我们对数组进行一些操作:
有些方法可以在日常开发中为我们节省很多代码
示例:
package demo; import java.util.Arrays; public class ArraysDemo { public static void main(String[] args) { function1(); function2(); function3(); } public static void function1(){ //对数组升序排列,这里用了比冒泡排序性能高很多的快排 int[] arr = {5,4,8,7,3,1,6}; Arrays.sort(arr); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } //升序打印 } public static void function2(){ //数组的二分查找法,我的第6篇文章有原理介绍,与这里的原理大致上相同 int[] arr = {11,4,5,7,9,13,1}; //二分法前提是有序数组 Arrays.sort(arr); int index = Arrays.binarySearch(arr, 7); System.out.println(index);//排序后7的所有是3 //这里需要注意:如果这个元素在数组中不存在 //那么返回一个负数:(-插入点-1) } public static void function3(){ int[] arr = {1,2,3,4,5}; String string = Arrays.toString(arr); System.out.println(string); //输出:[1, 2, 3, 4, 5] 字符串 //原理在我的前几篇文章中写过 } }
有时候数组超过long型的大小,需要计算,怎么办?
BigInteger类:大数运算
示例:
package demo; import java.math.BigInteger; public class BigIntegerDemo { public static void main(String[] args) { function(); } public static void function() { BigInteger b1 = new BigInteger("6666666666666666666666666666666"); BigInteger b2 = new BigInteger("1234567891234567891234567891231123123"); BigInteger b3 = b1.add(b2);// b1+b2 System.out.println(b3);// BigInteger b4 = b1.subtract(b2);// b1-b2 System.out.println(b4);// -1234561224567901224567901224564456457 BigInteger b5 = b1.multiply(b2);// b1*b2 System.out.println(b5);// 很长一个数,这里不再复制 BigInteger b6 = b2.divide(b1);// b2/b1 System.out.println(b6);// } }
BigDecimal类:浮点大数运行,提高浮点数运算精度
示例:
package demo; import java.math.BigDecimal; public class BigDecimalDemo { public static void main(String[] args) { System.out.println(0.09+0.01);//输出0.99999 System.out.println(1.0-0.32);//输出0.67999 //发现这里会出现不合适的结果 //原因:计算机二进制中,表示浮点数不精确造成的 //解决方法:BigDecimal类 function1(); function2(); } public static void function1(){ BigDecimal b1 = new BigDecimal("0.09"); BigDecimal b2 = new BigDecimal("0.01"); BigDecimal b3 = b1.add(b2);//b1+b2 System.out.println(b3);//得到0.10,正确 BigDecimal b4 = new BigDecimal("1.0"); BigDecimal b5 = new BigDecimal("0.32"); BigDecimal b6 = b4.subtract(b5);//b4-b5 System.out.println(b6);//0.68,正确 BigDecimal b7 = b1.multiply(b2);//b1*b2 System.out.println(b7);//0.0009,正确 } public static void function2(){ //除法方面有一些区别,需要注意下 BigDecimal b1 = new BigDecimal("1.301"); BigDecimal b2 = new BigDecimal("101"); //BigDecimal b3 = b1.divide(b2);//如果不整除这里会出现异常 BigDecimal b3 = b1.divide(b2,2,BigDecimal.ROUND_HALF_UP); //第二个参数是保留两位小数的意思 //第三个参数是保留模式:最接近的数字舍入(即为四舍五入保留模式),还有很多其他模式 System.out.println(b3);//保留两位,得到0.02的结果 } }
相关推荐
shenwenjie 2020-04-25
cxcxrs 2020-06-26
yanyongtao 2020-11-02
shawsun 2020-07-04
us0 2020-06-28
小海 2020-06-25
Skyline 2020-06-16
jiedinghui 2020-06-04
数据与算法之美 2020-05-27
breakpoints 2020-05-17
cuterabbitbaby 2020-05-14
吴小伟 2020-05-09
程序员之怒 2020-04-26
doupoo 2020-05-04
Ghero 2020-05-03
chibangyuxun 2020-04-30