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

相关推荐
计算机学姐4 分钟前
基于SpringBoot+Vue的高校运动会管理系统
java·vue.js·spring boot·后端·mysql·intellij-idea·mybatis
平凡的小码农18 分钟前
JAVA实现大写金额转小写金额
java·开发语言
一直在进步的派大星21 分钟前
Docker 从安装到实战
java·运维·docker·微服务·容器
老华带你飞25 分钟前
公寓管理系统|SprinBoot+vue夕阳红公寓管理系统(源码+数据库+文档)
java·前端·javascript·数据库·vue.js·spring boot·课程设计
yttandb32 分钟前
重生到现代之从零开始的C语言生活》—— 内存的存储
c语言·开发语言·生活
我明天再来学Web渗透36 分钟前
【hot100-java】【二叉树的层序遍历】
java·开发语言·数据库·sql·算法·排序算法
结衣结衣.1 小时前
python中的函数介绍
java·c语言·开发语言·前端·笔记·python·学习
茫茫人海一粒沙1 小时前
Python 代码编写规范
开发语言·python
原野心存1 小时前
java基础进阶知识点汇总(1)
java·开发语言
程序猿阿伟1 小时前
《C++高效图形用户界面(GUI)开发:探索与实践》
开发语言·c++