javaMath类

Math类

介绍

        Math类是一个提供了一系列静态方法用于执行基本数学运算的类。由于它是静态的,因此你不需要创建Math类的实例就可以使用其所提供的方法。

常用方法

基本运算

  • Math.abs(int a):返回参数的绝对值。
  • Math.max(int a,int b):返回两个参数中的较大值。
  • Math.min(int a,int b):返回两个参数中的较小值。
System.out.println(Math.abs(-9));//输出绝对值9
int a=8;int b=9;
System.out.println(Math.max(a,b));//输出较大值9
System.out.println(Math.min(a,b));//输出较小值8

幂运算和平方根

  • Math.pow(double a,double b):返回a的b次幂的值。
  • Math.sqrt(double a):返回正确输入的a的算术平方根,a必须是非负的。如果为负则返回NaN(not a number)。
System.out.println(Math.pow(2,3));//输出2.0的3.0次方8.0
System.out.println(Math.sqrt(9));//输出9.0的算术平方根3.0
//两函数的参数要求是双精度浮点数,整形变量会被向上转型

四舍五入和取整

  • Math.round(float/double a):返回最接近的int值(四舍五入)。
  • Math.ceil(double a):返回大于或等于参数的最小double类型整数值(先向上舍入到最接近的整数值,再转为double类型进行输出)
  • Math.floor(double a):返回小于或等于参数的最大double类型整数值(先向下舍入到最接近的整数值,再转为double类型进行输出)
System.out.println(Math.round(3.111));//输出3
System.out.println(Math.ceil(-3.1));//输出-3.0
System.out.println(Math.floor(3.1));//输出3.0

随机数

  • Math.random():返回一个0.0<=x<1.0的值。

例:利用Math.random()方法获取[2,7]范围内的值。

(int) (2 + Math.random()*(7 - 2 + 1))
//Math.random()*(7-2)表示在(2,7)的长度范围取值
//即(0,5)的长度范围随机取长度再加上2
//因为强制转换(句首int)会丢失数据
//所以为实现取[2,7]的值,实际要得到[2,8)的值
//所以将(random[0,1)*5+1)+2)得到的double转为int即所求结果

Arrays类

介绍

        在Java中,Arrsys类是一个包含用来操作数组的工具类。这个类中的所有方法也都是静态的,因此你不需要创建Arrays类的实例就可以使用其所提供的方法。

常用方法

  • Arrays.toString():快捷遍历数组。之前我们如果想遍历某一数组中的所有元素,一般需要借助for循环,现在则可以直接使用Arrays类中的toString方法。
Integer[] num={1,5,9};
System.out.println(Arrays.toString(num));
//输出[1,5,9]
  • Arrays.sort():对多种类型的数组进行排序,包括基本数据类型(如int [] 、douoble [] 、char [] 等)的数组。
public class Go {
    public static void main(String[] args) {
        Integer[] num = {5, 3, 8, 4, 2};
        Arrays.sort(num); // 使用自然顺序进行排序  
        System.out.println(Arrays.toString(num)); // 输出: [2, 3, 4, 5, 8]  

        String[] str = {"banana", "apple", "pear"};
        Arrays.sort(str); // 使用字符串的自然顺序进行排序  
        System.out.println(Arrays.toString(str)); // 输出: [apple, banana, pear]  
    }
}

        同时,该方法还可自定义排序规则:该方法的重载版本 Arrays.sort(T[] a, Comparator<? super T>c),具体结构如下(<Integer>在此为泛型):

Integer[] num = {5, 3, 8, 4, 2};
Arrays.sort(num, new Comparator<Integer>() {
    @Override
    public int compare(Integer o1, Integer o2) {
        return 0;//不做改动
        //return o2-o1;从大到小排序
        //return o1-o2;从小到大排序
    }
});

        其中,return 0代表不做改动、return o2-o1代表从大到小排序、return o1-o2代表从小到大排序。该方法可通过传入一个接口 Comparator 实现自定义排序。调用自定义排序时,需要传入两个参数:(1)基本数据类型的数组,(2)实现了Comparator接口的匿名内部类,要求重写compere方法。
        该方法会先判断接口是否为空,若不为空则执行TimSort类的binarySort(二叉树排序)方法,然后根据动态绑定机制,c.compare执行我们所传入的匿名内部类的compare()方法,该方法返回的值>0还是<0会直接影响排序的结果。
        return 0代表返回值为0,故不做改动;
        return o2-o1如果 o2 > o1 则返回一个正数,表示o2应该排在o1前面、如果 o2 < 01 则返回一个负数,表示o2应该排在o1后面。如果o2=o1,则返回 0。也就是从大到小排序。
        return o1-o2同理,代表从小到大排序。

  • Arrays.binarySearch():通过二分搜索法进行查找,要求数组为升序排列。如果在数组中找到了指定元素,该方法将返回该元素在数组中的索引;如果没有找到,它将返回一个负数,该负数的绝对值减 1 表示如果将该元素插入到数组中,它应该被插入的位置。
public class Go {
    public static void main(String[] args) {
        Integer[] num = {2,3,4,5,8};
        System.out.println(Arrays.binarySearch(num, 5));//查找5,返回索引3
        System.out.println(Arrays.binarySearch(num, 7));
        //查找7,因为该数组中无7,所以返回索引-5,代表|-5|-1=4,该元素可放入num[4]
    }
}
  • Arrays.copyOf():拷贝原数组中指定数量的元素,如果该指定数量大于原数组的长度,则会使用null填充。
public class Go {
    public static void main(String[] args) {
        Integer[] num = {2,3,4,5,8};
        Integer[] num1=Arrays.copyOf(num,3);
        System.out.println(Arrays.toString(num1));//输出[2,3,4]
    }
}
  • Arrays.fill():数组填充,将指定的 int 值分配给指定 int 型数组的每个元素。
public class Go {
    public static void main(String[] args) {
        Integer[] num = {2,3,4,5,8};
        Arrays.fill(num,6);
        //此时num数组的值[6,6,6,6,6]
    }
}
  • Arrays.equals():比较两数组元素是否相同
public class Go {
    public static void main(String[] args) {
        Integer[] num = {2,3,4,5,8};
        Integer[] num1 = {2,3,4,5,8};
        Integer[] num2 = {6,6,6,6,6};
        System.out.println(Arrays.equals(num,num1));//返回true
        System.out.println(Arrays.equals(num,num2));//返回flase
    }
}
  • Arrays.asList():将一组值转化为list集合,返回的新集合编译类型为List,运行类型为java.util.Arrays#Arrayslist,是Arrays类的静态内部类。
public class Go {
    public static void main(String[] args) {
        Integer[] num = {2,3,4,5,8};
        List mylist=Arrays.asList(num);
        System.out.println("mylist="+mylist);
        //mylist=[2, 3, 4, 5, 8]
        System.out.println("mylist的运行类型:"+mylist.getClass());
        //mylist的运行类型:class java.util.Arrays$ArrayList
    }
}

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值