数组
java.util.Arrays中提供了操作数组的方法:
1、static String toString(int [] arr) 打印数组
2、static int[] copyOf(int[] orginal,int newLength) 复制指定的数组,用零
3、void fill(boolean[] fiag,boolean value) 对数组进行统一填充
int[] arr ={1,2,3};
int tmp[] = Arrays.copyOf(arr,4);
System.out.println(Arrays.toString(tmp));
tmp = Arrays.copyOf(arr,1);
System.out.println(Arrays.toString(tmp));
int[] arr1 = new int[5];
Arrays.fill(arr1,1);
System.out.println(Arrays.toString(arr1));
boolean[] b = new boolean[3];
Arrays.fill(b,true);
System.out.println(Arrays.toString(b));
[1, 2, 3, 0]
[1]
[1, 1, 1, 1, 1]
[true, true, true]
分析一波Arrays.copyOf的底层代码
public static int[] copyOf(int[] original, int newLength) {
int[] copy = new int[newLength];
System.arraycopy(original, 0, copy, 0,
Math.min(original.length, newLength));
return copy;
}
可以看到主要调用的System.arraycopy,在文档中查看arraycopy可以得到:
public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length); 参数解释 src - 原数组 srcPos - 原数组的起始位置 dest - 目标数组 destPos - 目标数组的起始值 length - 拷贝的长度
分析:首先创建newLength大小的数组,系统会默认填充0,调用arraycopy函数,将起始数组的第0位到起始length和newLength最小值复制到目标数组从第0位开始。
二维数组
本质上来说不存在二维数组,二维数组的第一列元素存在对应行即一维数组的引用地址。
遍历:Arrays中同样提供:deepToString()
一维数组、二维数组的定义:
int[]a = new int[2];
int []a1 = {1,2};
int[][] c= new int[3][];
int[][] c1 = { new int[3], new int [2], {1,2,3,4}};
System.out.println(Arrays.deepToString(c1));
Date
java.util.date
构造:
(1)Date()空参 获取当前系统时间
(2)Date(long time) 参数为一个long 值为1970年到目前系统时间的毫秒数 1秒=1000毫秒
(3)Date(int year-1900,int month,int date)//分别为年月日 month、week从0开始
常用方法:
(1)long getTime() 返回距1970年1月1日的毫秒数 1969-1970年,unix诞生,目前电脑分32位、64位就是因为getTime的值越来越大。
(2)void setTime(long time) 设置时间 依然毫秒数。
Date d = new Date();
System.out.println(d.getTime());
long time = 1742235542411L;
Date date = new Date(time);
System.out.println(time);
Date date1 = new Date(2022-1900,4,1);
System.out.println(date1);
1642235977948
1742235542411
Sun May 01 00:00:00 CST 2022
Calendar
构造:Calendar c = Calendar.getInstance(); 后面会来解释(TODO)
常用方法:
int get(int field) //输入Calendar中静态属性的标识数得到对应Calendar的值。
void set(int field ,int value)设置标识数对应的值。
void set(int year,int month,int date)设置年月日
Calendar calendar2 = Calendar.getInstance();
System.out.println(calendar2.get(Calendar.HOUR));
System.out.println(calendar2.get(Calendar.HOUR_OF_DAY));
calendar2.set(Calendar.YEAR,2018);
System.out.println(calendar2.getTime());
7
19
Mon Jan 15 19:23:29 CST 2018
相互转换
//Calendar转Date
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
System.out.println(calendar.getTime());
System.out.println(date);
// Date转Calendar
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(date);
System.out.println(calendar1.getTime());
Sat Jan 15 19:19:50 CST 2022
Sat Jan 15 19:19:50 CST 2022
Sat Jan 15 19:19:50 CST 2022
输入
类 java.util.Scanner
Scanner scanner = new Scanner(System.in)
int a = scanner.nextIn();
double b = scanner.nextDouble()
String c = scanner.nextLine()
字符串输入前不能输入整数、浮点数,否则会失效。