Java中的System类和一些练习

​​​​​​​

目录

常用方法:

第一个方法:

第二个方法:

第三个方法:

[方法 三 的拓展:](#方法 三 的拓展:)


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

常用方法:

第一个方法:

复制代码
//        方法的形参:0表示虚拟机是正常停止
//        非0表示虚拟机异常停止

        System.out.println("会执行");

        System.exit(0);

        System.out.println("看看我执行了吗");


        //但我们需要把整个程序停止,就可以调用这个方法

第二个方法:

返回当前时间毫秒值,并且以 1970 年 1 月 1 日 08:00:00 作为计算机中的时间原点(含时差); 1 秒=1000 毫秒

复制代码
System.out.println(System.currentTimeMillis());
//分两次时间打印 :第一次1705373724363  第二次1705373737774
//看得出时间是在变化的

那这个方法的作用在哪?

复制代码
public class Test02 {
    public static void main(String[] args) {

     /*求1~100000中的质数*/
        
        long start = System.currentTimeMillis();//开始
        
        for (int i = 1; i < 100000; i++) {
            if (check1(i)) {
                System.out.println(i);
            }
        }
        long end = System.currentTimeMillis();//结束

          //获取程序运行时间
        System.out.println(end-start);//老方法需要578毫秒
    
    }
    public static boolean check1(int number) {
        //验证是否是质数的方法(老方法)
        for (int i = 2; i < number; i++) {
            if (number % i == 0) {
                return false;
            }
        }
        return true;
    }
}

public class Test02 {
    public static void main(String[] args) {

     /*求1~100000中的质数*/
        
        long start = System.currentTimeMillis();//开始
        
        for (int i = 1; i < 100000; i++) {
            if (check2(i)) {
                System.out.println(i);
            }
        }
        long end = System.currentTimeMillis();//结束

          //获取程序运行时间
        System.out.println(end-start);//新方法只需要33毫秒
    		//可以验证出改进的方法效率确实更高了
    }
  //验证是否是质数的方法(新方法--效率更高)
    public static boolean check2(int number) {
        for (int i = 2; i <= Math.sqrt(number); i++) {
            if (number % i == 0) {
                return false;
            }
        }
        return true;
    }
}

得出此方法可以验证程序运行速度。


第三个方法:

复制代码
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);
    	//遍历arr2
        for (int i = 0; i <arr2.length ; i++) {
            System.out.print(arr2[i]+" ");
        }
        System.out.println();

控制台:

1 2 3 4 5 6 7 8 9 10

练习:使 arr2 为: 0 0 0 0 1 2 3 0 0 0

复制代码
    	//拷贝arr1到arr2
        System.arraycopy(arr1,0,arr2,4,3);

练习:使 arr2 为:0 0 7 8 9 0 0 0 0 0

复制代码
    	//拷贝arr1到arr2
        System.arraycopy(arr1,6,arr2,2,3);

方法 三 的拓展:

  1. 如果数据源数组和目的数组是基本数据类型,那么类型必须一致,否则报错

    int []arr1={1,2,3,4,5,6,7,8,9,10};
    double []arr2=new double[10];

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

    int []arr1={1,2,3,4,5,6,7,8,9,10};
    int []arr2=new int[5];

3.若数据源数组和目的数组都是引用数据类型,那么子类类型可以拷贝给父类类型

复制代码
public class Test05 {
    public static void main(String[] args) {
        
        Student s1=new Student("张胜男1",21);
        Student s2=new Student("李胜男2",22);
        Student s3=new Student("王胜男3",23);
        //数据源数组和目的数组都是引用数据类型
        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++) {
            System.out.println(arr2[i].getName()+" ,"+arr2[i].getAge());
        }
    }
}



//父类
class Person{
   private  String name;
   private int age;

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

   public void setName(String name){
       this.name=name;
   }
    public String getName(){
       return 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);
    }
}

控制台:

张胜男1 ,21

李胜男2 ,22

王胜男3 ,23

相关推荐
北辰当尹几秒前
【实习之旅】Kali虚拟机桥接模式ping通百度
java·服务器·桥接模式
Just Dreamchaser6 分钟前
Pdf和Docx文件导出生成水印工具类
java·给pdf和docx文件添加水印
这个需求做不了8 分钟前
Java实现文件格式转换(图片,视频,文档,音频)
java
星融元asterfusion8 分钟前
AsterNOS SONiC基于YANG模型的现代网络管理:从CLI到gNMI的演进
开发语言·sonic·yang
web3.088899911 分钟前
1688商品详情API接口深度解析
开发语言·python
愿你天黑有灯下雨有伞13 分钟前
高性能Java并发编程:如何优雅地使用CompletableFuture进行异步编排
java
indexsunny13 分钟前
互联网大厂Java面试实战:基于电商场景的Spring Boot与微服务技术问答
java·spring boot·微服务·面试·hibernate·电商场景·技术问答
qq_124987075314 分钟前
基于Spring Boot的电影票网上购票系统的设计与实现(源码+论文+部署+安装)
java·大数据·spring boot·后端·spring·毕业设计·计算机毕业设计
欧阳天风15 分钟前
用setTimeout代替setInterval
开发语言·前端·javascript
无心水16 分钟前
【分布式利器:腾讯TSF】6、TSF可观测性体系建设实战:Java全链路Metrics+Tracing+Logging落地
java·分布式·架构·wpf·分布式利器·腾讯tsf·分布式利器:腾讯tsf