3. Java数组

1. 数组的概述

  • 数组(Array)是多个相同类型的数据按一定顺序排列的集合,并使用一个名字命名,通过编号的方式对这些数据进行统一管理。
  • 数组本身是引用数据类型的变量,数组中的元素可以是任何类型的变量。
  • 创建数组对象会在内存中开辟一整块连续的空间,数组名中引用的是这块连续空间的首地址。
  • 数组的长度一旦确定,就不能修改。
  • 可以直接通过下标(索引)的方式调用指定位置的元素,速度很快。

2. 一维数组

2.1 一维数组的使用
2.1.1 一维数组的基本操作

  • 一维数组的声明和初始化:数组有两种声明方式和两种初始化方式
  • 如何调用数组的指定位置的元素
  • 如何获取数组的长度
  • 如何遍历数组
public class ArrayTest {
    
    
	public static void main(String[] args) {
    
    
		// 数组声明的两种方式
		String[] names;
		int scores[];
		// 数组初始化的两种方式
		names = new String[] {
    
     "aa", "bb", "cc" }; // 静态初始化
		scores = new int[4]; // 动态初始化
		scores[0] = 88;
		scores[1] = 99;
		System.out.println(names[2]);
		System.out.println(scores[2]);
		// 获取数组的长度:数组的属性length
		System.out.println(names.length);
		// 遍历数组
		for (int i = 0; i < scores.length; i++) {
    
    
			System.out.println(scores[i]);
		}
		//类型推断
		int[] arr = {
    
    1,2,3,4,5};
	}
}

2.1.2 数组元素的默认初始化值

  • 数组元素是byte、short、int、long,默认值为:0
  • 数组元素是float、double,默认值为:0.0
  • 数组元素是char,默认值为:0(显示为空格)
  • 数组元素是boolean,默认值为:false
  • 数组元素是String,默认值为:null

2.2 一维数组的内存解析
2.2.1 内存结构的简单说明
主要内存结构有:栈、堆、方法区

  • 栈:存放局部变量、对象的引用名、数组的引用名
  • 堆:存放new出来的结构(对象的实体、数组的实体),含成员变量
  • 方法区:存放类名、类的加载信息、包名、方法的定义。其内有常量池和静态域。

2.2.2 一维数组的内存分配
在这里插入图片描述
数组的复制需要new一个同等长度的数组,直接用数组名进行赋值会使两个数组的指针指向同一位置。
Java中char型数组打印变量名会直接遍历数组,其他类型的数组打印变量名都是输出地址值。

3. 二维数组

二维数组实际上是将一维数组array1作为另一个一维数组array2的元素。从数组的底层运行机制来看,并没有多维数组。

3.1 二维数组的声明和初始化
二维数组的动态初始化有两种形式

public class ArrayTest2 {
    
    
	public static void main(String[] args) {
    
    
		// 静态初始化
		int[][] arr1 = new int[][] {
    
     {
    
     1, 2, 3 }, {
    
     4, 5 }, {
    
     6, 7, 8 } };
		int[] arr4[] = {
    
     {
    
     1, 2, 3 }, {
    
     4, 5 }, {
    
     6, 7, 8 } };
		// 两种方式的动态初始化
		String[][] arr2 = new String[3][2];
		String[][] arr3 = new String[3][];
		arr3[0] = new String[2];
		arr3[1] = new String[3];
	}
}

3.2 二维数组的内存解析
在这里插入图片描述

4. Arrays工具类

java.util.Arrays类为操作数组的工具类,包含了用来操作数组的各种方法。

  • boolean equals(int[] a,int[] b):判断两个数组是否相等
  • String toString(int[] a):输出数组信息
  • void fill(int[] a,int val):将指定值填充到数组中
  • void sort(int[] a):对数组进行排序(从小到大)
  • int binarySearch(int[] a,int key):对排序后的数组进行二分法检索指定的值,没找到返回负数

猜你喜欢

转载自blog.csdn.net/qq_43221336/article/details/107213794