文章目录
第1章 数组介绍及动态初始化
1.1 数组的概述和定义格式
1.1.1 数组的概述:
数组是存储同一种数据类型多个变量(元素)的东西(容器)
这多个变量的数据类型要一致
1.1.2 数组的定义格式
格式1:数据类型[] 数组名;
格式2:数据类型 数组名[]
* 举例:
* A:int[] a; 定义一个int类型的数组,数组名是a
* B:int a[]; 定义一个int类型的变量,变量名是a数组
1.2 数组初始化之动态初始化
1.2.1 数组初始化概述
Java中的数组必须先初始化,然后才能使用。
所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
1.2.2 数组初始化之动态初始化
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
格式:数据类型[] 数组名 = new 数据类型[数组长度];
数组长度其实就是数组中元素的个数。
举例:
int[] arr = new int[3];
解释:定义了一个int类型的数组,这个数组中可以存放3个int类型的值。
int[] arr = new int[3];
/*
* 左边:
* int:说明的是数组中的元素类型是int类型
* []:说明这是一个数组
* arr:这是数组的名称
* 右边:
* new:为数组申请分配内存空间。
* int:说明的是数组中的元素类型是int类型
* []:说明这是一个数组
* 3:数组长度,其实就是数组中的元素个数
第2章 数组内存结构及静态初始化
2.1.1 JVM内存划分
Java 程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
- 栈 存储局部变量
- 堆 存储new出来的东西
- 方法区 (面向对象进阶讲)
- 本地方法区 (和系统相关)
- 寄存器 (给CPU使用)
2.1.2 一个数组的内存图
定义一个数组,输出数组名及元素。然后给数组中的元素赋值,再次输出数组名及元素
public class ArrayTest {
public static void main(String[] args) {
//定义一个数组
int[] arr = new int[3];
//输出数组名及元素
System.out.println("arr:"+arr);
System.out.println("arr[0]:"+arr[0]);
System.out.println("arr[1]:"+arr[1]);
System.out.println("arr[2]:"+arr[2]);
System.out.println("--------------");
//然后给数组中的元素赋值
arr[0] = 100;
arr[2] = 200;
//再次输出数组名及元素
System.out.println("arr:"+arr);
System.out.println("arr[0]:"+arr[0]);
System.out.println("arr[1]:"+arr[1]);
System.out.println("arr[2]:"+arr[2]);
}
}
2.1.3 二个数组的内存图
定义两个数组,分别输出数组名及元素。然后分别给数组中的元素赋值,分别再次输出数组名及元素
public class ArrayTest2 {
public static void main(String[] args) {
//定义两个数组
int[] arr = new int[2];
int[] arr2 = new int[3];
//分别输出数组名及元素
System.out.println("arr:"+arr);
System.out.println("arr[0]:"+arr[0]);
System.out.println("arr[1]:"+arr[1]);
System.out.println("--------------");
System.out.println("arr2:"+arr2);
System.out.println("arr2[0]:"+arr2[0]);
System.out.println("arr2[1]:"+arr2[1]);
System.out.println("arr2[2]:"+arr2[2]);
System.out.println("--------------");
//然后分别给数组中的元素赋值
arr[1] = 100;
arr2[0] = 200;
arr2[1] = 300;
//分别再次输出数组名及元素
System.out.println("arr:"+arr);
System.out.println("arr[0]:"+arr[0]);
System.out.println("arr[1]:"+arr[1]);
System.out.println("--------------");
System.out.println("arr2:"+arr2);
System.out.println("arr2[0]:"+arr2[0]);
System.out.println("arr2[1]:"+arr2[1]);
System.out.println("arr2[2]:"+arr2[2]);
System.out.println("--------------");
}
}
2.1.4 二个数组指向同一个堆内存的内存图
定义两个数组,先定义一个数组,赋值,输出。然后定义第二个数组的时候把第一个数组的地址赋值给第二个数组。然后给第二个数组赋值,再次输出两个数组的名及元素
public class ArrayTest3 {
public static void main(String[] args) {
//先定义一个数组
int[] arr = new int[3];
//赋值
arr[0] = 100;
arr[1] = 200;
arr[2] = 300;
//输出
System.out.println("arr:"+arr);
System.out.println("arr[0]:"+arr[0]);
System.out.println("arr[1]:"+arr[1]);
System.out.println("arr[2]:"+arr[2]);
System.out.println("--------------");
//然后定义第二个数组的时候把第一个数组的地址赋值给第二个数组
int[] arr2 = arr;
//然后给第二个数组赋值
arr2[0] = 111;
arr2[1] = 222;
arr2[2] = 333;
//再次输出两个数组的名及元素
System.out.println("arr:"+arr);
System.out.println("arr[0]:"+arr[0]);
System.out.println("arr[1]:"+arr[1]);
System.out.println("arr[2]:"+arr[2]);
System.out.println("--------------");
System.out.println("arr2:"+arr2);
System.out.println("arr2[0]:"+arr2[0]);
System.out.println("arr2[1]:"+arr2[1]);
System.out.println("arr2[2]:"+arr2[2]);
}
}
2.1.5 数组初始化之静态初始化
• 静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
格式:
• 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
举例:
• int[] arr = new int[]{1,2,3};
• 解释:定义了一个int类型的数组,这个数组中可以存放3个int类型的值,并且值分别是1,2,3。
• 其实这种写法还有一个简化的写法
int[] arr = {1,2,3};