Java基础之:Math & Arrays & System

Math

Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。

方法介绍:

  1.abs 绝对值

  2.pow 求幂

  3.ceil 向上取整,返回>=该参数的最小整数;

  4.floor 向下取整,返回<=该参数的最大整数  

  5.round 四舍五入 Math.floor(该参数+0.5)

  6.sqrt 求开方

  7.random 返回随机数【0——1) ,重点!!

package class_Math;public class ClassTest01 {    public static void main(String[] args) {        //1.abs 绝对值        int abs = Math.abs(9);        System.out.println(abs);        //2.pow 求幂        double pow = Math.pow(-3.5, 4);        System.out.println(pow);        //3.ceil 向上取整,返回>=该参数的最小整数;        double ceil = Math.ceil(-3.0001);        System.out.println(ceil);        //4.floor 向下取整,返回<=该参数的最大整数        double floor = Math.floor(-4.999);        System.out.println(floor);        //5.round 四舍五入  Math.floor(该参数+0.5)        long round = Math.round(-5.001);        System.out.println(round);        //6.sqrt 求开方        double sqrt = Math.sqrt(-9.0);        System.out.println(sqrt);        //7.random 返回随机数【0——1)          //[a-b]:int num = (int)(Math.random()*(b-a+1)+a)          double random = Math.random();        System.out.println(random);                //小技巧:获取一个 a-b 之间的一个随机整数        int a = (int)(Math.random()*(15-7+1)+7);        System.out.println(a);        /*         * 理解:         *  1.Math.random() 是 [0,1)的随机数         *  2.(Math.random()*(15-7+1) 就是[0,9)         *  3.Math.random()*(15-7+1)+7 就是[7,16)         *  4.(int)取整就是 [7,15] ,即[a,b]之间的随机整数         */    }}

Arrays

Arrays里面包含了一系列静态方法,用于管理或操作数组(比如排序和搜索)。

Arrays排序sort方法

package class_Arrays;import java.util.Arrays;import java.util.Comparator;public class ClassTest01 {    public static void main(String[] args) {        Integer[] arr = { 25, 35, 11, 32, 98, 22 };//      Arrays.sort(arr);   //默认小到大排序        System.out.println(Arrays.toString(arr));        // 使用匿名内部类重写compare方法,实现从大到小排序        Arrays.sort(arr, new Comparator<Integer>() {            @Override            public int compare(Integer o1, Integer o2) {                if (o1 > o2) {                    return -1;                } else if (o1 < o2) {                    return 1;                } else {                    return 0;                }            }        });        System.out.println(Arrays.toString(arr));    }}//自写一个Arrays中的sort方法 体会为什么通过重写之后,匿名内部类动态绑定机制改变了排序方式class MyArrays {    @SuppressWarnings("unchecked")    public static void sort(Integer[] arr,Comparator c) {        Integer temp = 0;// 自动装箱        for (int i = 0; i < arr.length; i++) {            for (int j = 0; j < arr.length - 1 - i; j++) {                if (c.compare(arr[j] , arr[j + 1]) > 0) {                    temp = arr[j];                    arr[j] = arr[j + 1];                    arr[j + 1] = temp;                }            }        }    }        public static void main(String[] args) {        Integer[] arr = { 25, 35, 11, 32, 98, 22 };//      MyArrays.sort(arr);//不添加 Comparator接口对象为参数,就是简单的冒泡排序方法                //添加匿名内部类对象为参数,就可以改变排序方式。用此方法可以很灵活的使用排序。        MyArrays.sort(arr, new Comparator<Integer>() {            @Override            public int compare(Integer o1, Integer o2) {                //通过返回值的正负来控制,升序还是降序                 //只有当返回值为1时,才会发生交换。例如这里,o1 < o2时返回1 ,进行交换                //也就是需要前面的数,比后面的数大,即降序                if (o1 > o2) {                      return -1;                } else if (o1 < o2) {                    return 1;                } else {                    return 0;                }            }        });        System.out.println(Arrays.toString(arr));    }}

Arrays查找binarySearch方法及其他常用方法

package class_Arrays;import java.util.List;import java.util.Arrays;public class ClassTest02 {    public static void main(String[] args) {        //随机生成数组,并排序        Integer[] arr = new Integer[10];//      for (int i = 0; i < arr.length; i++) {//          arr[i] = (int)(Math.random()*100) + 1 ;//      }//      Arrays.sort(arr);        arr = new Integer[]{16, 28, 41, 51, 62, 67, 67, 86, 90, 93};        System.out.println(Arrays.toString(arr));                // binarySearch 通过二分搜索法进行查找,要求必须排好序        int index = Arrays.binarySearch(arr, 55);   //返回 -5 (55在51和62之间)        //找到则返回下标,若没有找到则返回-(low + 1)。即此数在数组中应该在的位置的下标 + 1,例:        //{1,3,5,9,10},此数组中找2,没有找到则返回-2,因为2本来在1和3的中间。下标为1再+1,就是-2        System.out.println(index);                        // copyOf 数组元素的复制,参数列表:目标数组,需拷贝元素个数(若超过,使用null填充,若<0,报错)        Integer[] newArr = Arrays.copyOf(arr, arr.length - 5);        Integer[] newArr2 = Arrays.copyOf(arr, arr.length + 5);        System.out.println(Arrays.toString(newArr));        System.out.println(Arrays.toString(newArr2));                // fill 数组元素的填充,将数组中的所有元素填充为所指定的内容        Integer[] num = new Integer[] { 9, 3, 2 };        Arrays.fill(num, 99);        System.out.println(Arrays.toString(num));                        //equals 比较两个数组元素内容是否完全一致        Integer[] array = new Integer[]{1,2,3};        Integer[] array2 = new Integer[]{1,2,3};        boolean equals = Arrays.equals(array, array2);        System.out.println(equals);                 //asList 将一组值,转换成list        List<Integer> asList = Arrays.asList(2,3,4,5,6,1);        System.out.println("asList=" + asList);    }}

Arrays类练习题

案例:自定义Book类,里面包含name和price,按price排序(从大到小)。要求使用两种方式排序 , 对对象的某个属性排序, 有一个 Book[] books = 3本书对象. 方式1:使用前面学习过的传递 实现Comparator接口匿名内部类,也称为定制排序。 方式2:让Book实现Comparable接口,完成排序。

package class_Arrays;import java.util.Arrays;import java.util.Comparator;/*    案例:自定义Book类,里面包含name和price,按price排序(从大到小)。要求使用两种方式排序 ,     对对象的某个属性排序, 有一个 Book[] books = 3本书对象.    方式1:使用前面学习过的传递 实现Comparator接口匿名内部类,也称为定制排序。    方式2:让Book实现Comparable接口,完成排序。 */public class ClassWork01 {    @SuppressWarnings({ "rawtypes", "unchecked" })    public static void main(String[] args) {        Book[] books = {new Book("三体1",30.2),new Book("三体2",28.2),new Book("三体3",29.2)};        System.out.println(Arrays.toString(books));        System.out.println("=============================");//      Arrays.sort(books, new Comparator() {//          @Override//          public int compare(Object o1, Object o2) {////              Book b1 = (Book)o1;//              Book b2 = (Book)o2;//              if(b1.getPrice() > b2.getPrice()) {//                  return 1;//              }else if (b1.getPrice() < b2.getPrice()) {//                  return -1;//              }else {//                  return 0;//              }//          }//      });        Arrays.sort(books);                System.out.println(Arrays.toString(books));    }}class Book implements Comparable<Book>{    private String name;    private double price;    public Book(String name, double price) {        super();        this.name = name;        this.price = price;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public double getPrice() {        return price;    }    public void setPrice(double price) {        this.price = price;    }    @Override    public String toString() {        return "Book [name=" + name + ", price=" + price + "]";    }        @Override    public int compareTo(Book o) {        if(this == o) {            return 0;        }        if(!(o instanceof Book)) {            return 0;        }        double price = ((Book)o).price;        if(this.price > price ){            return -1;        } else if(this.price < price) {            return 1;        } else {            return 0;        }    }}

System

  1. exit 退出当前程序

  2. arraycopy :复制数组元素,比较适合底层调用,一般使用Arrays.copyOf完成复制数组. int[] src={1,2,3}; int[] dest = new int[3]; System.arraycopy(src, 0, dest, 0, 3);

  3. currentTimeMillens:返回当前时间距离1970-1-1 的毫秒数

  4. gc:运行垃圾回收机制 System.gc();

import java.util.Arrays;public class System_ {    public static void main(String[] args) {        // -        // System.out.println("hello, world~~");        // System.exit(0); //退出程序        //        // System.out.println("hello, world~~");        // arraycopy :复制数组元素,比较适合底层调用,一般使用Arrays.copyOf完成复制数组.        int[] src = { 1, 2, 3 }; //源数组        int[] dest = new int[3];//目标数组        //解读        //1. src源数组        //2. 0 从src 的哪个索引开始拷贝        //3. dest 目标数组        //4. 0 表示把元素拷贝 到 dest第几个索引后        //5. 3 拷贝几个元素        System.arraycopy(src, 1, dest, 1, 2);        System.out.print(Arrays.toString(dest));    }}
(0)

相关推荐

  • java--第4章 数组

    实验内容:       1.一维数组的定义与赋值访问. 2.二维数组的定义与赋值访问. 3.冒泡排序的编程实现. 4.选择排序的编程实现. 实验步骤: 1. 定义一个含20个元素的整型数组,利用随机函 ...

  • 多维数组

    今日学习总结: 多维数组 针对数组中的元素类型没有特殊要求,所以允许数组的元素是数组.多维数组可以理解为数组的数组 数组中的每个数组元素可以是一个数组,但是不要求每个充当元素的数组长度一致 int[] ...

  • 常用类

    常用类 包装类 在类中查看属性方法的快捷键:Ctrl+F12 java.lang包会默认导入每个Java文件,所以我们不需要导入这个包,直接用包中的类就好了 byte Byte short Short ...

  • 冒泡排序、插入排序、选择排序、希尔排序

    排序是一个非常经典的问题,它以一定的顺序对一个数组(或一个列表)中的项进行重新排序(可以进行比较,例如整数,浮点数,字符串等)(增加,非递减,递减, 增加,词典等). 有许多不同的排序算法,每个都有其 ...

  • String算法考察小练习(康师傅较优解法)

    String算法考察小练习(康师傅较优解法)

  • 2021_2_24_数组

    数组 数组概述 数组的定义 数组是相同类型数据的有序集合 每一个数据被称作为一个数组元素,每个数组数组元素可以通过一个数组下标来访问它们. 数组声明创建 首先必须声明数组变量,才能在程序中使用数组.格 ...

  • Java基础之:泛型

    Java基础之:泛型 在不使用泛型的情况下,在ArrayList 中,添加3个Dog. Dog对象含有name 和 age, 并输出name 和 age (要求使用getXxx()). package ...

  • Java 基础知识

    Java 基础知识

  • Java 基础语法

    注释 #单行注释 // 这里是单行注释 #多行注释 /* 这里是 多行注释 */ #JavaDoc /* *@Description: *@Author: */ Java可以使用中文命名 但不建议使用 ...

  • Java基础(第二期)

    数据类型扩展以及面试题讲解 整数拓展:进制 int i=10; int i2=010; //八进制0 int i3=0x10; //十六进制0x 0~9 A~F 16 相关进制转换自行学习,用的不多 ...

  • Java开发工程师最新面试题库系列——Java基础部分(附答案)

    JAVA基础 如果你有更好的想法请在评论区留下您的答案,一起交流讨论 面向对象有哪些特征? 答:继承.封装.多态 JDK与JRE的区别是什么? 答:JDK是java开发时所需环境,它包含了Java开发 ...

  • 全栈必备 Java基础

    那一年,从北邮毕业,同一年,在大洋的彼岸诞生了一门对软件业将产生重大影响的编程语言,它就是--Java.1998年的时候,开始学习Java1.2,并在Java Orbix 上做服务,而如今Java 9 ...

  • 100个你应该知道的java基础知识

    100个你应该知道的java基础知识

  • 作为一名程序猿,你不可不知的Java基础知识的三十个经典问答

    作为一名程序猿,你不可不知的Java基础知识的三十个经典问答

  • 我把Java基础编程及思维导图整理的超级详细,小白都能看懂

    Java基础编程及其思维导图 目录: Java学习导图 一.Java基本语法 1.关键字与标识符 2.变量分类 3.运算符 4.流程控制 二.数组 1.数组概述 2.一维数组 3.二维数组 4.数组常 ...