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

相关推荐
Peter(阿斯拉)6 分钟前
[Java性能优化]_[时间优化]_[字符串拼接的多种方法性能分析]
java·性能优化·stringbuilder·string·字符串拼接·stringbuffer·时间优化
wearegogog12310 分钟前
C语言中的输入输出函数:构建程序交互的基石
c语言·开发语言·交互
Fine姐13 分钟前
The Network Link Layer: 无线传感器中Delay Tolerant Networks – DTNs 延迟容忍网络
开发语言·网络·php·硬件架构
HAPPY酷31 分钟前
给纯小白的Python操作 PDF 笔记
开发语言·python·pdf
liulilittle39 分钟前
BFS寻路算法解析与实现
开发语言·c++·算法·宽度优先·寻路算法·寻路
阿珊和她的猫1 小时前
autofit.js: 自动调整HTML元素大小的JavaScript库
开发语言·javascript·html
喜欢吃燃面1 小时前
C++算法竞赛:位运算
开发语言·c++·学习·算法
草莓熊Lotso1 小时前
《详解 C++ Date 类的设计与实现:从运算符重载到功能测试》
开发语言·c++·经验分享·笔记·其他
水痕011 小时前
gin结合minio来做文件存储
java·eureka·gin