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

相关推荐
码智社14 分钟前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海17 分钟前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖1 小时前
JDK 26 新特性详解
java·开发语言
马优晨2 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
人邮异步社区4 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大4 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
ttwuai4 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
维天说4 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
এ慕ོ冬℘゜5 小时前
前端基础:什么是时间戳?JS获取时间戳三种方法与实战用途
开发语言·前端·javascript
执明wa5 小时前
LayoutInflater详解: XML是如何变成View的?
android·xml·开发语言·android studio