java 日期数组_Java时间胶囊-数组的使用(1)

Java时间胶囊-数组的使用(1)

数组(Array)

是多个相同类型数据按照一定顺序排列的集合 并使用一个名字命名 并通过编号的方式对这些数据进行统一管理

数组的概述

数组的相关概念

数组名

元素

索引/下标/角标(从零开始)

数组的长度(数组存储元素的个数)

数组的相关特点

数组元素是有序排列

数组是引用数据类型 ---> 数组的元素既可以是基本数据类型也可以是引用数据类型

数组的长度一旦确定 不能修改

创建数组对象会在内存中开辟一整块连续的空间 而数组名中引用的是这块连续空间的首地址

数组的分类

按照维数 一维数组.二维数组(会出现 少).. .. .

按照数组元素的类型数组分为:基本数据类型元素的数组 引用数据类型元素的分组

数组的使用

一维数组的使用

一维数组的声明和初始化

如何调用数组的指定索引位置元素

获取数组的长度

遍历数组

数组元素的默认初始化值

数组的内存解析

1~5

// 1. 一维数组的声明和初始化

int[] ids;// 声明

// 1.1 静态初始化(数组的初始化和数组元素的赋值操作同时进行)(知道值的情况下进行)(引用类型初始化 --->new... .. .)

ids = new int[] { 1001, 1002, 1003, 1004 };

// 1.2 动态初始化(数组的初始化和数组元素的赋值操作分开进行)(不知道值的情况下进行)

String[] names = new String[5];

// 总结:无论静态还是动态初始化 数组初始化完成后 ---> 数组长度就确定了(数组的长度一旦确定 不能修改)

// 2. 如何调用数组指定位置的元素:通过索引(index)的方式(一方面赋值 /一方面调用)

// Java中数组的索引 ---> 从0开始~到数组长度-1结束

// 编译只是生成字节码文件 真正运行中才将字节码文件解释运行在内存中

names[0] = "张三";

names[1] = "李四";

names[2] = "王五";

names[3] = "赵六";

names[4] = "李七";

// 3. 如何获得数组长度

System.out.println(names.length);

System.out.println(ids.length);

// 4. 遍历数组元素(将数组元素全部输出)

for (int i = 0; i < names.length; i++) {

System.out.println(names[i]);

}

// 5. 数组元素的默认初始化值

System.out.println("\n整型数据类型数组默认值:");

System.out.println("--------------------------------------------------");

int[] arr = new int[4];

for (int i = 0; i < arr.length; i++) {

System.out.println(arr[i]);

}// 输出 = 0/0/0/0 ---> 0这是整型数组的默认初始化值

System.out.println("\n短整型数据类型数组默认值:");

System.out.println("--------------------------------------------------");

short[] arr1 = new short[4];

for (int i = 0; i < arr1.length; i++) {

System.out.println(arr1[i]);

}

System.out.println("\n浮点型数据类型数组默认值:");

System.out.println("--------------------------------------------------");

double[] arr2 = new double[4];

for (int i = 0; i < arr2.length; i++) {

System.out.println(arr2[i]);

}

System.out.println("\n字符型数据类型数组默认值:");

System.out.println("--------------------------------------------------");

char[] arr3 = new char[4];

for (int i = 0; i < arr3.length; i++) {

System.out.println(arr3[i]);

}// 输出是相当于空格的效果 但不是空格(空格ASCII == 48)输出结果是0

System.out.println("\n布尔型数据类型数组默认值:");

System.out.println("--------------------------------------------------");

boolean[] arr4 = new boolean[4];

for (int i = 0; i < arr4.length; i++) {

System.out.println(arr4[i]);

}

System.out.println("\n引用数据类型数组默认值:");

System.out.println("--------------------------------------------------");

String[] arr5 = new String[4];

for (int i = 0; i < arr5.length; i++) {

System.out.println(arr5[i]);

}

/*

* 数组元素的默认初始化值... .. .

* 数组元素是整形:0

* 数组元素是浮点型:0.0

* 数组元素是char型:0或者'\u0000' 而非'0'

* 数组元素是boolean型:false

*

* 数组元素是引用数据类型:null

*

*/

6. 数组内存结构简单说明(结构的规范在jVM中体现)(随着JDK版本的提升 规范也有所变化)

内存中主要结构:栈(stack)(是线性表结构) 堆(heap)方法区(常量池 静态域 还有类加载的信息... .. .)

栈 ---> 存储局部变量 引用

堆 ---> 对象 数组

(String --> 常量池           static --> 静态域)

栈 ---> 堆 堆中连续的空间 使用首地址值(使用16进制表示)(这里的地址并不是内存中真实的地址 而是JVM算出来的哈希值 屏蔽了底层真实内存地址) 值赋予栈空间引用

一维数组的简单应用

从键盘输入5个学生成绩 提取最高分 并分级输出每个学生的成绩等级

... .. .

多维数组(二维即以上)

如果说可以把一维数组当作几何中的线性结构 那么二维数组就相当于一个表格(对于多维数组 数组的元素可以是引用类型 那么数组的元素也可以是数组 可以想象一个线性结构 它的每一项都是数组 就构成了表格(二维数组))

把一个数组当作另一个数组的元素 即是二维数组

从计算机底层来看 没有二维数组 因为当栈中引用指向堆中的一维数组 一维数组的每一项索引 又指向堆中的一项一维数组

二维数组的使用

二维数组的声明和初始化

如何调用数组的指定索引位置元素

获取数组的长度

遍历数组

数组元素的默认初始化值

数组的内存解析

// 1. 二维数组的声明和初始化

// 1.1 静态初始化

int[][] arr1 = new int[][] { { 1, 2, 3 }, { 4, 5 }, { 6, 7, 8 } };

// 1.2 动态初始化

int[][] arr2 = new int[3][2];

// 1.2.1 动态初始化

int[][] arr3 = new int[3][];

// 2. 如何调用数组的指定位置的元素

System.out.println(arr1[0][0]);

System.out.println(arr1[1][1]);

System.out.println(arr2[0][0]);

// 3. 获取数组的长度

System.out.println(arr1.length);

System.out.println(arr1[1].length);

// 4. 如何遍历二维数组

for (int i = 0; i < arr1.length; i++) {

for (int j = 0; j < arr1[i].length; j++) {

System.out.print(arr1[i][j] + "\t");

}

System.out.println();

}

/*

* 5. 数组元素的默认初始化值 规定:二维数组 我们分为两层(外层数组元素 内层数组元素) int[][] arr = new

* int[4][3]; 外层元素:arr[0],arr[1].. .. . 内层元素:arr[0][0],arr[1][2]... .. .

*

*/

int[][] arr = new int[4][3];

System.out.println(arr[0]);// [I@15db9742 “[”代表是一维的数组 “I”是int型

// “@”地址是15db9742(hex) 因为数组每一个下标中都存着数组

System.out.println(arr[0][0]);// 0

String[][] arr4 = new String[4][2];

System.out.println(arr4[1]);// [Ljava.lang.String;@6d06d69c

System.out.println(arr4[1][1]);// null

double[][] arr5 = new double[4][];

System.out.println(arr5[1]);// null 因为数组的每一个下标中存储的是数组 现在下标中并没有初始化过

// 所以是null 无关是何种类型

/*

* 针对于初始化方式1:int[][] arr = new int[4][3];

* 外层元素的初始化值为:地址值

* 内层元素的初始化值为:与一维数组初始化情况相同

* 针对于初始化方式1:int[][] arr = new int[4][];

* 外层元素的初始化值为:null

* 内层元素的初始化值为:不能调用 否则报错

*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值