0
点赞
收藏
分享

微信扫一扫

Day05 数组 管4

zhongjh 2022-01-15 阅读 28
java

数组

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()

字符串输入前不能输入整数、浮点数,否则会失效。

举报

相关推荐

0 条评论