java基础知识四(数组)

第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};

发布了30 篇原创文章 · 获赞 10 · 访问量 900

猜你喜欢

转载自blog.csdn.net/weixin_45788152/article/details/104190772