Arrays类
Arrays类主要是针对数组操作的工具类
Arrays类的一些方法:
public static String toString(int[] a):可以将int类型的数组转换成字符串 ([元素1,元素2,元素3...])
public static void sort(int[] a)对指定的 int 型数组按数字升序进行排序
public static int binarySearch(int[] a,int key):二分搜索法: 在int类型的数组中查找key元素的索引
例如:
package TextDome; import java.util.Arrays; public class AarrysDome { public static void main(String[] args) { int[] arr= {23,34,45,21,35,65}; String str=Arrays.toString(arr); System.out.println(str); System.out.println("------------------"); //这个不用像数组遍历一样(String str=Arrays.toString(arr);)返回String值去输出,直接调用就行,否则会编译出错 Arrays.sort(arr); String str1=Arrays.toString(arr); System.out.println(str1); System.out.println("-----------------"); //运用这个二分查找法,前提也必须数组是有序的,才可以去调用 int index=Arrays.binarySearch(arr, 65); System.out.println(index); } } 运行结果: 遍历后的数组是:[23, 34, 45, 21, 35, 65] ------------------ 排序后的数组是:[21, 23, 34, 35, 45, 65] ----------------- 这个数的索引是:5
Calendar类(日历类)
Calendar类是一个抽象类,不能创建对象。(例如:Calendar c=new Calendar();这样是错误的)
它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法
public static Calendar getInstance() :通过一个静态功能来创建日历了对象
以下是获取当前时间的日期
例如:
package TextDome; import java.util.Calendar; public class getInstenceDome { public static void main(String[] args) { // 通过调用静态getInstance方法创建对象 Calendar ca=Calendar.getInstance(); // 获取年份 int year=ca.get(Calendar.YEAR); // 获取月份,这里的月份是从0开始的,所以在输出的时候需要给月份上+1 int month=ca.get(Calendar.MONTH); // 获取日份 int date=ca.get(Calendar.DATE); System.out.println(year+"年"+(month+1)+"月"+date+"日"); } } 运行结果: 2018年5月2日
Calendar中的两个常用方法:
public abstract void add(int field,int amount)根据日历的规则,为给定的日历字段添加或减去指定的时间量 (这个方法常用)
public final void set(int year, int month,int date)设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值
例如:
package TextDome; import java.util.Calendar; public class addDome { public static void main(String[] args) { Calendar c=Calendar.getInstance(); int year=c.get(Calendar.YEAR); int month=c.get(Calendar.MONTH); int date=c.get(Calendar.DATE); System.out.println(year+"年"+(month+1)+"月"+date+"日"); System.out.println("-------------------"); //设置成三年前的七天前 c.add(Calendar.YEAR, -3); c.add(Calendar.DATE, -7); year=c.get(Calendar.YEAR); date=c.get(Calendar.DATE); System.out.println(year+"年"+(month+1)+"月"+date+"日"); System.out.println("-----------------"); Calendar c1=Calendar.getInstance(); c1.set(2023, 6,3); int year1=c1.get(Calendar.YEAR); int month1=c1.get(Calendar.MONTH); int date1=c1.get(Calendar.DATE); System.out.println(year1+"年"+(month1+1)+"月"+date1+"日"); } } 运行结果: 2018年5月2日 ------------------- 2015年5月25日 ----------------- 2023年7月3日
根据上述例子解决例题:
获取任意一年的二月有多少天 (改进:键盘录入一个年份)
//思路:只需要将月份固定成2月,然后将日期通过add()方法-1即可求出
package TextDome; import java.util.Calendar; //获取任意一年的二月有多少天? import java.util.Scanner; public class addTextDome { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请您输入一个年份:"); int year=sc.nextInt(); Calendar ca=Calendar.getInstance(); //因为这里实际是三月一日,上例中提到输出时月份都得+1,因为月份是从0开始记起的 ca.set(year, 2,1); ca.add(Calendar.DATE, -1); int date=ca.get(Calendar.DATE); System.out.println(year+"年的2月有"+date+"天"); } }
System类
System类被final修饰,不能被继承,也不能实例化
System 类包含一些有用的类字段和方法。它不能被实例化。
常用的方法:
public static void gc()运行垃圾回收器。
例如:
package TextDome; //public static void gc()运行垃圾回收器。 class Person{ private String name; private int age; public Person() { super(); } public Person(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } @Override protected void finalize() throws Throwable { System.out.println("gc()垃圾回收走的是finalize方法,"+this); super.finalize(); } } public class SystemDome { public static void main(String[] args) { Person p=new Person("迪丽热巴",27); System.out.println(p); p=null;//这里的p将不再指向堆内存了,回收的是堆内存的成员变量 System.gc(); //这里的垃圾回收实质走的是finalize方法 } } 运行结果: Person [name=迪丽热巴, age=27] gc()垃圾回收走的是finalize方法,Person [name=迪丽热巴, age=27]
友情提示:这里建议将Person类与主类分开写,为了方便观看我才写在一起,由上例可以看出gc()方法走的是重写finalize方法
public static void exit(int status)终止当前正在运行的 Java 虚拟机。参数用作状态码; 一般情况,需要终止
Jvm,那么参数为0
例如:
import javax.swing.plaf.synth.SynthSpinnerUI; /* public static void exit(int status)终止当前正在运行的 Java 虚拟机。参数用作状态码; 一般情况,需要终止 Jvm,那么参数为0 public static long currentTimeMillis()返回以毫秒为单位的当前时间 */ public class SystemDome1 { public static void main(String[] args) { System.out.println("迪丽热巴最美"); System.exit(0); System.out.println("高雯也很美"); System.out.println("大家美才是真的美"); } } 运行结果: 迪丽热巴最美
由上例可以看出,不管在exit()方法后面输出多少,在控制台他只是输出第一句,所以当这个方法被调用时,后面输出再多都将没有意义。
public static long currentTimeMillis()返回以毫秒为单位的当前时间
例如:
package TextDome; /* public static void exit(int status)终止当前正在运行的 Java 虚拟机。参数用作状态码; 一般情况,需要终止 Jvm,那么参数为0 public static long currentTimeMillis()返回以毫秒为单位的当前时间 */ public class SystemDome1 { public static void main(String[] args) { long l=System.currentTimeMillis();//返回的是long类型的值 //输出的值是把当前的时间返回成毫秒值,而且单独使用时没有任何意义 System.out.println(l); System.out.println("-------------------"); //它还可以这样用,用来检测执行一段代码的执行效率 long oldtime=System.currentTimeMillis(); int sum=0; for(int x=1;x<=100000;x++) { sum+=x; } System.out.println(“sum:”+sum); long newtime=System.currentTimeMillis(); long time=(newtime-oldtime); System.out.println("运行这个循环共耗时"+time+"毫秒"); } } 运行结果: 1525257135450 ------------------- Sum:705082704 运行这个循环共耗时1毫秒
public static void arraycopy(Object src,int srcPos, Object dest,int destPos, int length)
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束
src:原数组
dest:目标数组
srcPos :从原数组的哪个位置开始
destPos:到目标数组的哪个位置结束
length:长度
例如:
package TextDome; import java.util.Arrays; public class SystemDome2 { public static void main(String[] args) { int[] arr1= {23,34,45,56,67}; int[] arr2= {11,22,33,44,55}; System.out.println("arr:"+Arrays.toString(arr1)); System.out.println("arr2:"+Arrays.toString(arr2)); System.out.println("-------------"); //这个方法就是将数组arr1中1对应的元素往后的三个元素替换数组arr2中2对应的元素往后的三个元素 System.arraycopy(arr1, 1, arr2, 2,3); System.out.println("arr1:"+Arrays.toString(arr1)); System.out.println("arr2:"+Arrays.toString(arr2)); } } 运行结果: arr:[23, 34, 45, 56, 67] arr2:[11, 22, 33, 44, 55] ------------------------- arr1:[23, 34, 45, 56, 67] arr2:[11, 22, 34, 45, 56]