目录
常用方法:
第一个方法:
第二个方法:
第三个方法:
方法 三 的拓展:
- 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到arr2System.arraycopy(arr1,0,arr2,0,10);//遍历arr2for (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到arr2System.arraycopy(arr1,0,arr2,4,3);
练习:使 arr2 为:0 0 7 8 9 0 0 0 0 0
//拷贝arr1到arr2System.arraycopy(arr1,6,arr2,2,3);
方法 三 的拓展:
- 如果数据源数组和目的数组是基本数据类型,那么类型必须一致,否则报错
int []arr1={1,2,3,4,5,6,7,8,9,10};
double []arr2=new double[10];
- 在拷贝的时候必须考虑数组长度,如果超出范围也会报错
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拷贝到arr2System.arraycopy(arr1,0,arr2,0,3);//遍历arr2for (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