05笔记记录
知识点1:IDEA的使用
知识点2:数组的理解
* 1. 数组,可以看做是多个相同数据类型类型的变量按照一定顺序依次紧密排列起来的集合。
*
* 2.数组的相关概念:
* 数组名
* 数组元素
* 数组的长度
* 数组的角标、下标、下角标、索引、index
*
* 3. 回顾:变量按照数据类型来分:基本数据类型、引用数据类型(数组、类、接口)
* >数组,属于引用数据类型;数组的元素,既可以是基本数据类型,也可以是引用数据类型。
* >数组,一旦初始化完成,其长度就是确定的。且长度不可变
知识点3:一维数组的使用
- 一维数组的声明和初始化
4.1 一维数组的声明和初始化
//变量的定义: 数据类型 变量名 = 变量值
int num;//声明
num = 10;//初始化
String info = "尚硅谷";
//数组的声明和初始化
//静态初始化:数组变量的赋值与数组元素的赋值同时进行
int[] scores = new int[]{56,54,87,98,77,68};
int ages[] = {56,54,87,98,77,68};//使用了类型推断
String[] names = {"马龙飞","石磊","陈自强"};
//动态初始化:数组变量的赋值与数组元素的赋值分开进行
String[] foods = new String[5];
- 如何访问数组的元素
//4.2 如何访问数组的元素:通过角标的方式
//角标是从0开始的,到数组的长度-1为止
foods[0] = "宫保鸡丁";//给第一个元素赋值
foods[4] = "水煮鱼";//给最后一个元素赋值
System.out.println(foods[0]);
System.out.println(scores[2]);
- 数组的长度
//4.3 数组的长度:使用length属性
System.out.println(names.length);//3
System.out.println(scores.length);//6
- 数组的遍历
//4.4 数组的遍历
// System.out.println(scores[0]);
// System.out.println(scores[1]);
// System.out.println(scores[2]);
// System.out.println(scores[3]);
// System.out.println(scores[4]);
// System.out.println(scores[5]);
for(int i = 0;i < scores.length;i++){
System.out.println(scores[i]);
}
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
- 数组元素的默认初始化值 见《ArrayTest1.java》
数组元素的默认初始化值 (以动态初始化为例说明)
*
* ① 如果数组元素是整型(byte\short\int\long),则默认值为:0
* ② 如果数组元素是浮点型(float \ double),则默认值为:0.0
* ③ 如果数组元素是boolean型,则默认值为:false
* ④ 如果数组元素是char型,则默认值为:0 或 '\u0000'
*
* ⑤ 如果数组元素是引用数据类型,则默认值为:null
- 数组的内存解析 (难)
在这里插入图片描述
知识点4:二维数组的使用
* 1. 数组的分类:
* ① 按照数组元素的类型:基本数据类型元素的数组 vs 引用数据类型元素的数组
* ② 按照数组的维数: 一维数组 、 二维数组 、 三维数组 、 。。。。
*
* 2.数组,属于引用数据类型;数组的元素,既可以是基本数据类型,也可以是引用数据类型。
* 如果一维数组的元素,又是一维数组,则构成了二维数组。
- 基本使用
//一维数组的定义
int[] scores = new int[]{56,54,87,98,77,68};
//3.1 二维数组静态初始化
String[][] names = new String[][]{{"闫宏浩","杨超宇"},{"付子","周斌","孟腾博"},{"王延彬","翟旭亮"}};
//3.1 二维数组动态初始化
int[][] ages = new int[4][3];
int[] nums[] = new int[4][];
nums[0] = new int[5];
nums[1] = new int[6];
//错误的:
// int[][] arr = new int[][4];
//3.2 如何访问数组的元素
//通过角标的方式访问
System.out.println(names[1]);//地址值 [Ljava.lang.String;@1540e19d
System.out.println(names[1][1]);//"周斌"
ages[1][2] = 12;
//3.3 数组的长度
System.out.println(names.length);//3
System.out.println(names[0].length);//2
//3.4 数组的遍历
for(int i = 0;i < names.length;i++){//{{"闫宏浩","杨超宇"},{"付子","周斌","孟腾博"},{"王延彬","翟旭亮"}}
for(int j = 0;j < names[i].length;j++){
System.out.print(names[i][j] + " ");
}
System.out.println();
}
- 二维数组元素的默认初始化值
形式1,比如:int[][] ages = new int[4][3];
* 外层元素:存储的是地址值
* 内层元素:
* ① 如果数组元素是整型(byte\short\int\long),则默认值为:0
* ② 如果数组元素是浮点型(float \ double),则默认值为:0.0
* ③ 如果数组元素是boolean型,则默认值为:false
* ④ 如果数组元素是char型,则默认值为:0 或 '\u0000'
* ⑤ 如果数组元素是引用数据类型,则默认值为:null
*
*
* 形式2,比如:int[][] nums = new int[4][];
* 外层元素:默认值null
* 内层元素:不存在,输出的话,会报异常:NullPointerException
public class ArrayTest1 {
public static void main(String[] args) {
int[][] ages = new int[4][3];
System.out.println(ages[0]);//外层元素:null [I@1540e19d
System.out.println(ages[0][0]);//内层元素:0
String[][] arr = new String[4][2];
System.out.println(arr[0][0]);//null
System.out.println("####################");
int[] nums[] = new int[4][];
System.out.println(nums[0]);//null
System.out.println(nums[0][0]);//报错:NullPointerException
}
}
- 内存解析