Java中System的用法

news2024/12/28 2:18:27

System指的是当前进程运行的操作系统,属于java.lang包下面的类

常见的用法有以下几种:

第一种简单,我们直接上第二种方法吧

currentTimeMills()用法

 // 演示currentTimeMillis方法
    public static void main(String[] args) {
        // 获取当前时间所对应的毫秒值
        long millis = System.currentTimeMillis();
        // 输出结果
        System.out.println("当前时间所对应的毫秒值为:" + millis);
    }

 结果

获取到当前时间的毫秒值的意义:我们常常来需要统计某一段代码的执行时间。此时我们就可以在执行这段代码之前获取一次时间,在执行完毕以后再次获取一次系统时间,然后计算两个时间的差值,

这个差值就是这段代码执行完毕以后所需要的时间。如下代码所示:

package system;

public class systemdemo2 {
    // 演示currentTimeMillis方法
    public static void main(String[] args) {
        //判断1~100000之间有多少个质数
        long start = System.currentTimeMillis();
        for (int i = 1; i <= 100000; i++) {
            boolean flag = isPrime2(i);
            if (flag) {
                System.out.println(i);
            }
        }
        long end = System.currentTimeMillis();
        //获取程序运行的总时间
        System.out.println(end - start); //方式一:1514 毫秒  方式二:34毫秒
    }

    //以前判断是否为质数的方式
    public static boolean isPrime1(int number) {
        for (int i = 2; i < number; i++) {
            if (number % i == 0) {
                return false;
            }
        }
        return true;
    }

    //改进之后判断是否为质数的方式(效率高)
    public static boolean isPrime2(int number) {
        for (int i = 2; i <= Math.sqrt(number); i++) {
            if (number % i == 0) {
                return false;
            }
        }
        return true;
    }
}

演示arraycopy方法

方法参数说明:

src:      源数组
srcPos:  源数值的开始位置
dest:    目标数组
destPos: 目标数组开始位置
length:   要复制的元素个数
public static native void arraycopy(Object src,  int  srcPos, Object dest, int destPos, int length); 

  要求 把srcArray数组中从0索引开始的3个元素,从desArray数组中的1索引开始复制过去

package system;

public class systemdemo3 {
    public static void main(String[] args) {
        // 定义源数组
        int[] srcArray = {23, 45, 67, 89, 14, 56};
        // 定义目标数组
        int[] desArray = new int[10];// [0,23,45,67]
        // 要求 进行数组元素的copy:
        // 把srcArray数组中从0索引开始的3个元素,从desArray数组中的1索引开始复制过去
        System.arraycopy(srcArray, 0, desArray, 1,3 );
        // 遍历目标数组
        for (int i = 0; i < desArray.length; i++) {
            System.out.print( desArray[i]+" ");
        }
        System.out.println();
    }
}

结果

  要求: 删除数组中第3个元素(67):要删除67这个元素,我们只需要将67后面的其他元素依次向前进行移动即可

public class systemdemo4 {
    public static void main(String[] args) {
        // 定义源数组
        int[] srcArray = {23, 45, 67, 89, 14, 56};
        // 定义目标数组
        int[] desArray = new int[10];
        //要求删除数组中第3个元素(67):
        //要删除67这个元素,我们只需要将67后面的其他元素依次向前进行移动即可
        System.arraycopy(srcArray, 3, srcArray, 2, 3);
        // 遍历目标数组
        for (int i = 0; i < srcArray.length; i++) {
            System.out.print(srcArray[i] + " ");
        }
        System.out.println();
    }
}

结果:

arraycopy方法底层细节:

1.如果数据源数组和目的地数组都是基本数据类型,那么两者的类型必须保持一致,否则会报错

2.在拷贝的时候需要考虑数组的长度,如果超出范围也会报错

3.如果数据源数组和目的地数组都是引用数据类型,那么子类类型可以赋值给父类类型

在这里我只想强调第3条

如果数据源数组和目的地数组都是引用数据类型,那么子类类型可以赋值给父类类型

public class systemdemo5 {
    public static void main(String[] args) {
        //public static void arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数) 数组拷贝
        //细节:
        //1.如果数据源数组和目的地数组都是基本数据类型,那么两者的类型必须保持一致,否则会报错
        //2.在拷贝的时候需要考虑数组的长度,如果超出范围也会报错
        //3.如果数据源数组和目的地数组都是引用数据类型,那么子类类型可以赋值给父类类型
        Student s1 = new Student("zhangsan", 23);
        Student s2 = new Student("lisi", 24);
        Student s3 = new Student("wangwu", 25);

        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];//向下转换,把父类arr2强转为子类Student
            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);
    }

}

结果:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1876537.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每日一道算法题 面试题 08.08. 有重复字符串的排列组合

题目 面试题 08.08. 有重复字符串的排列组合 - 力扣&#xff08;LeetCode&#xff09; Python class Solution:def permutation(self, S: str) -> List[str]:# 以索引记录字符是否用过lelen(S)idx[_ for _ in range(le) ]# 组合得到的字符串combine[]*leans[]# 递归def fu…

哪吒汽车,正在等待“太乙真人”的拯救

文丨刘俊宏 在360创始人、哪吒汽车股东周鸿祎近日连续且着急的“督战”中&#xff0c;哪吒汽车&#xff08;下简称哪吒&#xff09;终究还是顶不住了。 6月26日&#xff0c;哪吒通过母公司合众新能源在港交所提交了IPO文件&#xff0c;急迫地希望成为第五家登陆港股的造车新势力…

第二十二课,列表的操作函数(二)

一&#xff0c;列表.append(元素) 该函数用于向列表的末尾追加一个新元素 你可以把列表想象成一个班级&#xff0c;列表.append(元素)则像是往班里插入一个新同学 二&#xff0c;列表.insert(下标, 元素) 在指定下标处&#xff0c;插入指定的元素 不同于列表.append(元素)函…

JAVA医院绩效考核系统源码:三级公立医院绩效考核系统源码 可源码交付,支持二开

JAVA医院绩效考核系统源码&#xff1a;三级公立医院绩效考核系统源码 可源码交付&#xff0c;支持二开 医院绩效考核系统是一个集数据采集、分析、评估、反馈于一体的信息化工具&#xff0c;旨在提高医疗服务质量、优化资源配置、促进医院可持续发展。以下是对医院绩效考核系统…

【React】第二个组件的一点小问题(JSX元素需要被包裹)

能看出为什么报错吗&#xff1f; 它告诉我们JSX元素需要被包裹&#xff0c;此时只需在所有元素外套一层标签&#xff08;空标签也可以哦&#xff09; 专业点就是要有一个根元素 注释&#xff1a; ctrl / 效果是 {/* */}这样 三元运算符&#xff1a;同CPP 循环输出数组&#x…

【wsl2】WIN11借助wsl2挂载ext4磁盘

我有一块ext4文件系统的硬盘&#xff0c;想要在win11上访问&#xff0c;我们可以通过wsl2进行挂载 wsl2的安装就跳过了&#xff0c;可以自行搜索安装。 安装完成后 >>> GET-CimInstance -query "SELECT * from Win32_DiskDrive"通过这个命令&#xff0c;可…

[算法]——堆排序(C语言实现)

简单的介绍一下用堆排序的算法对整形数据的数据进行排序。 一、堆的概念 堆是具有下列性质的完全二叉树&#xff1a;每个结点的值都大于或等于其左右孩子节点的值&#xff0c;称为大顶堆&#xff1b;或者每个结点的值都小于或等于其左右孩子结点的值&#xff0c;称为小顶堆。 …

ElasticSearch 和 MySQL的区别

MySQLElasticSearch 数据库&#xff08;database&#xff09;索引&#xff08;index&#xff09;数据表&#xff08;table&#xff09; 类型&#xff08;type&#xff09; 记录文档&#xff08;document&#xff0c;json格式&#xff09; 一、ES基础命令 1. ES cat查询命令 2.…

超简单的nodejs使用log4js保存日志到本地(可直接复制使用)

引入依赖 npm install log4js 新建配置文件logUtil.js const log4js require(log4js);// 日志配置 log4js.configure({appenders: {// 控制台输出consoleAppender: { type: console },// 文件输出fileAppender: {type: dateFile,filename: ./logs/default, //日志文件的存…

4 前缀和、双端队列使用:子串

很多方法需要借助数据结构来操作&#xff1b; 1 数组 2 栈 3 队列 4 堆 5 链表 双端队列&#xff08;deque&#xff0c;全称为double-ended queue&#xff09;是一种特殊的线性数据结构&#xff0c;它允许在其两端进行添加和删除操作。在Python中&#xff0c;双端队列由标…

keil软件的一些使用技巧

1.MDK 的 TAB 键支持块操作 也就是可以让一片代码整体右移固定的几个位&#xff0c;也可以通过 SHIFTTAB 键整体左移固定的几个位。 2.快速注释与快速消注释 就是先选中你要注释的代码区&#xff0c;然后右键&#xff0c;选择Advanced→Comment Selection 就可以了。 3.快速打…

FFmpeg教程-三-播放pcm文件-1

目录 一&#xff0c;下载SDL 二&#xff0c;在Qt中测试 1&#xff0c;在pro文件中加入路径 2&#xff0c;在.cpp文件中加入头文件 3&#xff0c;进行测试 4&#xff0c;显示结果 一&#xff0c;下载SDL 通过编程的方式播放音视频&#xff0c;也是需要用到这2个库: FFmpeg…

百度智能云升级:接入33个大模型,Llama 2引领创新,103个Prompt模板上线

大家好&#xff0c;我是herosunly。985院校硕士毕业&#xff0c;现担任算法研究员一职&#xff0c;热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名&#xff0c;CCF比赛第二名&#xff0c;科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的…

Mysql常用SQL:日期转换成周_DAYOFWEEK(date)

有时候需要将查询出来的日期转换成周几&#xff0c;Mysql本身语法就是支持这种转换的&#xff0c;就是DAYOFWEEK()函数 语法格式&#xff1a;DAYOFWEEK(date) &#xff08;date&#xff1a;可以是指定的具体日期&#xff08; 如2024-06-29 &#xff09;&#xff0c;也可以是日期…

pc端制作一个顶部固定的菜单栏

效果 hsl颜色 hsl颜色在css中比较方便 https://www.w3school.com.cn/css/css_colors_hsl.asp 色相&#xff08;hue&#xff09;是色轮上从 0 到 360 的度数。0 是红色&#xff0c;120 是绿色&#xff0c;240 是蓝色。饱和度&#xff08;saturation&#xff09;是一个百分比值…

数据可视化在智慧园区中的重要作用

在现代智慧园区的建设和管理中&#xff0c;数据的作用越来越重要。智慧园区利用物联网、云计算、大数据等技术&#xff0c;实现了园区各类信息的实时采集和处理。数据可视化作为数据处理和展示的重要工具&#xff0c;为智慧园区的各个方面提供了强有力的支持。 首先&#xff0c…

【AI提升】AI利器Tool Call/Function Call(一):langchain+ollama+llama3/qwen2

1、使用AI的一个常用场景就是&#xff0c;接收人类的语言&#xff0c;识别人类的意图&#xff0c;最终进行相关的业务处理&#xff0c;这就是设计Tool Call / Function Call的初衷。 2、现在一般都说Tool Call&#xff0c;以前常叫Function Call&#xff0c;不要纠结。 一、安…

【提交ACM出版 | EIScopus检索稳定 | 高录用】第五届大数据与社会科学国际学术会议(ICBDSS 2024,8月16-18)

第五届大数据与社会科学国际学术会议&#xff08;ICBDSS 2024&#xff09;将于2024年08月16-18日在中国-上海隆重举行。 ICBDSS会议在各专家教授的支持下&#xff0c;去年已成功举办了四届会议。为了让更多的学者有机会参与会议分享交流经验。本次会议主要围绕“大数据”、“社…

在线字节大端序小端序转换器

具体请前往&#xff1a;在线字节大端序小端序转换器

Linux kernel 与 设备树

Linux kernel 与 设备树 1 介绍1.1 概述1.2 发展历程1.3 各版本发布时间及特色1.4 Linux 单内核1.5 Linux 内核网址1.6 NXP 官方镜像与 野火 鲁班猫镜像的区别 2 Linux 内核组成2.1 进程管理2.2 内存管理2.3 文件系统2.4 设备管理2.5 网络功能 3 Linux 内核编译3.1 编译 Kernel…