Java基础20-System、Math、Arrays、BigDecimal/Integer
一、Arrays类
此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。
1.常用方法
public static void main(String[] args) { int[] arr= {1,5,6,8,3,5,2,4,9}; //将int数组转化为字符串 String ret=Arrays.toString(arr); System.out.println(ret); //排序,第二到第六个数进行排序 Arrays.sort(arr,2,6); System.out.println(Arrays.toString(arr)); //所有书进行排序,从小到大 Arrays.sort(arr); System.out.println(Arrays.toString(arr)); //在指定数组中,查找给定元素值出现的位置。若没有查询到,返回位置为-1。要求该数组必须是个有序的数组。 System.out.println(Arrays.binarySearch(arr,6)); }
二、System类
System中代表程序所在系统,提供了对应的一些系统属性信息,和系统操作。
1.常用方法
public static void main(String[] args) { //获取当前系统时间与1970年01月01日00:00点之间的毫秒差值 long time=System.currentTimeMillis(); //可以用来测试程序运行的时长 System.out.println(time); //用来结束正在运行的Java程序。参数传入一个数字即可。通常传入0记为正常状态,其他为异常状态 System.exit(0); System.out.println("ending"); }
public static void main(String[] args) { //System类中数组拷贝方法arrayCopy //该方法没有方法体,该方法使用了native修饰符(本地方法),底层使用了c/c++语言 int[] src={1,2,3,65,6,9}; //System.arraycopy(src, srcPos, dest, destPos, length); // src - 源数组。 // srcPos - 源数组中的起始位置。 // dest - 目标数组。 // destPos - 目标数据中的起始位置。 // length - 要复制的数组元素的数量。 //从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。 }
二、Math类
Math包含了用于执行基本数学运算的方法,如初等质数、对数、平方根和三角函数等,都是静态方法。
1.常用方法
//abs方法,结果都为正数 double d1 = Math.abs(-5); // d1的值为5 double d2 = Math.abs(5); // d2的值为5 //ceil方法,结果为比参数值大的最小整数的double值 double d1 = Math.ceil(3.3); //d1的值为 4.0 double d2 = Math.ceil(-3.3); //d2的值为 -3.0 double d3 = Math.ceil(5.1); // d3的值为 6.0 //floor方法,结果为比参数值小的最大整数的double值 double d1 = Math.floor(3.3); //d1的值为3.0 double d2 = Math.floor(-3.3); //d2的值为-4.0 double d3 = Math.floor(5.1); //d3的值为 5.0 //max方法,返回两个参数值中较大的值 double d1 = Math.max(3.3, 5.5); //d1的值为5.5 double d2 = Math.max(-3.3, -5.5); //d2的值为-3.3 //min方法,返回两个参数值中较小的值 double d1 = Math.min(3.3, 5.5); //d1的值为3.3 double d2 = Math.max(-3.3, -5.5); //d2的值为-5.5 //pow方法,返回第一个参数的第二个参数次幂的值 double d1 = Math.pow(2.0, 3.0); //d1的值为 8.0 double d2 = Math.pow(3.0, 3.0); //d2的值为27.0 //round方法,返回参数值四舍五入的结果 double d1 = Math.round(5.5); //d1的值为6.0 double d2 = Math.round(5.4); //d2的值为5.0 //random方法,产生一个大于等于0.0且小于1.0的double小数 double d1 = Math.random();
四、BigDecimal/BigInteger
float和double都不能表示精确的小数,此时使用Bigdecimal,用于处理金钱和精度要求高的数据
Bigdecimal
可以实现浮点数据的高精度运算
但这样加起来的数据也并不准确,那怎么办呢?
原来这个地方需要用到字符串类型才可以保证数据的准确性
BigInteger
java中long型为最大整数类型,对于超过long型的数据如何去表示呢.在Java的世界中,超过long型的整数已经不能被称为整数了,它们被封装成BigInteger对象.在BigInteger类中,实现四则运算都是方法来实现,并不是采用运算符.
public static void main(String[] args) { //大数据封装为BigInteger对象 BigInteger big1 = new BigInteger("12345678909876543210"); BigInteger big2 = new BigInteger("98765432101234567890"); //add实现加法运算 BigInteger bigAdd = big1.add(big2); //subtract实现减法运算 BigInteger bigSub = big1.subtract(big2); //multiply实现乘法运算 BigInteger bigMul = big1.multiply(big2); //divide实现除法运算 BigInteger bigDiv = big2.divide(big1); }