当前位置: 首页 > article >正文

JavaAPI(1)

Java的API(1)

一、Math的API

  • 是一个帮助我们进行数学计算的工具类
  • 私有化构造方法,所有的方法都是静态的(可以直接通过类名.调用)

在这里插入图片描述

  • 平方根:Math.sqrt()
  • 立方根:Math.cbrt()

示例

public class MathDemo1 {
    public static void main(String[] args) {
        // Math类在Java的lang包中,所以不需要引入
        // 且都是静态方法,可以直接通过类名.直接调用

        // 绝对值
        System.out.println(Math.abs(-123.456)); // 123.456
        System.out.println(Math.abs(-156));      // 156

        // 向上取整(只要小数有值就会向整数上进)(往数轴的正方向进一)
        System.out.println(Math.ceil(123.3));    // 124.0
        System.out.println(Math.ceil(123.9));    // 124.0
        System.out.println(Math.ceil(-12.34));   // -12.0

        // 向下取整(小数的值直接舍弃)(往数轴的负方向减一)
        System.out.println(Math.floor(0.3));     // 0.0
        System.out.println(Math.floor(0.9));     // 0.0
        System.out.println(Math.floor(5.999999)); // 5.0
        System.out.println(Math.floor(-12.34));  // -13.0

        // 四舍五入(满五向整数位进一)(向数轴的两端进一)
        System.out.println(Math.round(5.363));   // 5
        System.out.println(Math.round(5.5));     // 6
        System.out.println(Math.round(5.6666));  // 6
        System.out.println(Math.round(-12.33));  // -12
        System.out.println(Math.round(-12.56));  // -13

        // 获取两个int值中的较大值(当两个不同数据类型的变量进行比较时,会转化成精确度大的一方,再进行比较)
        System.out.println(Math.max(3, 100000)); // 100000
        System.out.println(Math.max(2, 3.0));    // 3.0
        System.out.println(Math.max(3.14, 9));    // 9.0

        // 次幂(a的b次幂),返回值和参数值都是double类型
        System.out.println(Math.pow(3, 2));      // 9.0
        System.out.println((int)Math.pow(2, 4)); // 16

        // 返回double类型的随机数,范围是 [0.0, 1.0)
        System.out.println(Math.random());        // 0.123456 (示例输出,实际输出会随机)

        // 开平方根
        System.out.println(Math.sqrt(4));        // 2.0
        // 开立方根
        System.out.println(Math.cbrt(8));        // 2.0
    }
}

二、System的API

  • System也是一个工具类,提供一些与系统相关的方法

1、exit终止虚拟机

  • public static void exit(int status)——终止当前运行的JAVA虚拟机
        // 终止当前的虚拟机
        // 方法形参的状态码:
        // 0——表示当前虚拟机是正常停止
        // 非0——表示当前虚拟机是异常停止
        System.exit(0);
        System.out.println("看看我执行了吗"); // 程序已经结束,不会再执行

2、currentTimeMillis()nanoTime()返回当前系统时间

  • public static long currentTimeMillis()——返回当前系统的时间毫秒和纳秒值
// 返回当前系统的时间毫秒值形式(表示从计算机的时间原点:C语言的生日1970.1.1.08:00:00(国内),当程序运行的时间)
        long l = System.currentTimeMillis();
        System.out.println(l);
  • 该方法可以用来获取程序运行的总时间(分析对比时间复杂度)

示例:(对比两种方法判断质数的时间)

		int o = 9489997;
        // 示例:(判断质数的两种时间复杂度)
//        long c = System.currentTimeMillis();
        long c = System.nanoTime();
        for (int i = 2; i < o; i++) {
            if(o % i == 0) {
                System.out.println("该数不是质数");
                break;
            }
        }
//        long a = System.currentTimeMillis();
        long a = System.nanoTime();
		// 一个非质数,会在该数的平方根前面会出现可以被整除的数(以此可以来提高效率)
        for (int i = 2; i < Math.sqrt(o); i++) {
            if(o % i == 0) {
                System.out.println("该数不是质数");
                break;
            }
        }
//        long b = System.currentTimeMillis();
        long b = System.nanoTime();
        System.out.println("第一种方法时间为:" + (a - c) + "纳秒");	// 输出: 第一种方法时间为:23300纳秒
        System.out.println("第二种方法时间为:" + (b - a) + "纳秒");	// 输出: 第二种方法时间为:19900纳秒

3、arraycopy()进行数组的拷贝

  • public static void arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数)——数组拷贝
// 拷贝数组
        int[] arr1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int[] arr2 = new int[10];
        // 把arr1数组中的数据拷贝到arr2数组中
        // 参数一: 数据源,要拷贝的数据从哪个数组而来
        // 参数二: 从数据源数组中的第几个索引开始拷贝
        // 参数三: 拷贝的目的地,要拷贝到哪个数组
        // 参数四: 目的地数组的起始索引
        // 参数五: 拷贝的个数
//        System.arraycopy(arr1, 0, arr2, 0, 10);
        System.arraycopy(arr1, 0, arr2, 4, 3);

        for (int i = 0; i < arr2.length; i++) {
            System.out.print(arr2[i] + " ");	// 输出: 0 0 0 0 1 2 3 0 0 0
        }

数组拷贝的注意事项

  1. 如果数据源数组和目的地数组都是基本数据类型,那么两者的类型必须保持一致,否则会报错
  2. 在拷贝的时候需要考虑数组的长度,如果超出范围就会报错
  3. 如果数组源数组和目的地数组都是引用数据类型,那么子类类型可以赋值给父类类型(若要再次使用则需要强转)

示例

public class SystemDemo2 {
    public static void main(String[] args) {
        Student s1 = new Student("小明", 20);
        Student s2 = new Student("小资", 21);
        Student s3 = new Student("小兰", 22);

        Student[] arr1 = {s1, s2, s3};
        Person[] arr2 = new Person[3];
        // 把arr1中的对象的地址赋值给arr2中
        System.arraycopy(arr1, 0, arr2, 0, 3);

        // 遍历数组arr2
        for (int i = 0; i < arr2.length; i++) {
            Student stu = (Student)arr2[i];
            System.out.println(stu.getName() + ", " + stu.getAge());
        }
    }
}

class Person {
    private String name;
    private int age;

    public  Person() {

    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

class Student extends Person {
    public Student() {
    }
    public Student(String name, int age) {
        super(name, age);
    }
}

三、Runtime的API

  • Runtime表示当前虚拟机的运行环境

在这里插入图片描述

示例

public class RuntimeDemo1 {
    public static void main(String[] args) throws IOException {
        // 1、获取Runtime的对象
        Runtime r1 = Runtime.getRuntime();

        // 2、虚拟机的终止
        // 0————正常终止虚拟机
        // 非0值————异常终止虚拟机
//        Runtime.getRuntime().exit(0);
//        System.out.println("看看我执行了吗");   // 不会执行

        // 3、获取CPU的线程数
        System.out.println(Runtime.getRuntime().availableProcessors());     

        // 4、获取总内存的大小,单位byte字节
        System.out.println(Runtime.getRuntime().maxMemory() / 1024 / 1024);     

        // 5、已经占用的内存的大小,单位byte字节
        System.out.println(Runtime.getRuntime().totalMemory() / 1024 / 1024);

        // 6、剩余的内存的大小,单位byte字节
        System.out.println(Runtime.getRuntime().freeMemory() / 1024 / 1024);

        // 7、运行cmd命令
        // 打开记事本
        Runtime.getRuntime().exec("notepad");
        // shutdown:关机
        // 加上参数才能执行
        // -s : 默认在1分钟之后关机
        // -s -t 指定时间 : 指定关机时间
        // -a : 取消关系操作
        // -r : 关闭并重启
//        Runtime.getRuntime().exec("shutdown -s -t 36000");
        Runtime.getRuntime().exec("shutdown -a");
    }
}



http://www.kler.cn/a/383587.html

相关文章:

  • Docker怎么关闭容器开机自启,批量好几个容器一起操作?
  • 记一次前端Vue项目国际化解决方案
  • OpenAI 12天发布会:AI革命的里程碑@附35页PDF文件下载
  • CentOS Stream 9 挂载Windows共享FTP文件夹
  • 为何页面搜索应避免左模糊和全模糊查询???
  • C++中的字符串实现
  • 鸿蒙开发:ArkUI Toggle 组件
  • 计算机网络-网络原理初识
  • yolo继续训练模型
  • 【Linux内存泄漏】自创pamp 内存快照比对定位内存泄漏【2024-11-07】
  • npm镜像的常用操作
  • 职场逆袭!学会管理上司,你也能成为职场赢家
  • C语言 | Leetcode C语言题解之第524题通过删除字母匹配到字典里最长单词
  • 代码随想录算法训练营第二十一天 | LeetCode93.复原IP地址、LeetCode78.子集、LeetCode90.子集II
  • RFID应急消防管控:科技与效率的完美结合
  • golang学习2
  • 轮播图【HTML+CSS+JavaScript】
  • ubuntu 之 压缩与解压缩(7zip,zip,tar.gz,rar...)
  • 从零开始学python 6(持续更新中ing)
  • 知识总结三
  • Webserver(4.3)TCP通信实现
  • 基于CNN-BiLSTM的时间序列数据预测,15个输入1个输出,可以更改数据集,MATLAB代码
  • V4L2 sub-devices 翻译
  • Python基础学习_01
  • Android 使用自定义注解标注当前类
  • STM32学习笔记-外部中断和外部时钟