Skip to content

数组

数组

是一个特殊的变量,存储相同数据类型的一组数据(多个)

普通变量 VS 数组 声明一个普通变量就是在内存中划出一块合适的空间来保存数据 声明一个数组就是在内存中划出一串连续的空间来保存数据

数组基本要素:

1.标识符 数组名称(变量名) 2.数组元素 数组中保存的数据 3.元素下标 数据的编号(从0开始,逐1递增) 4.元素类型 数组中保存的数据的类型

数组中的所有元素必须是相同的数据类型, 任意的数据类型都可以定义它的一个数组。

如何使用数组

1.声明数组 数据类型[] 数组名/数据类型 数组名[]; int[] array 或 int array[];

2.分配内存空间 指定数组内部独立空间的个数,指定数组的长度 数组名 = new 数组类型[长度]; array = new int[5];

3.赋值 给数组添加元素 数组名[下标] = 数值; array[1] = 5;

4.使用数组 数组名[下标] System.out.print(array[1]);

示例:创建数组的三种写法

java
int[] array;
array = new int[5];
for(int i = 0; i < array.length; i++) {
	array[i] = i+1;
}
java
// 不能分成两行写,必须写在一行。
int[] array = {1,2,3,4,5};
java
int[] array2 = new int[]{1,2,3,4,5};

数组长度一旦确定,不能修改,index必须在合适范围内取出,一旦超出范围,直接抛异常。

1.数据类型确定不能修改,数组中只能保存一种数据类型的数据。 2.数组一旦创建,长度不能修改。 3.数组下标从0开始,逐1递增,注意数组下标越界的问题。

Java程序的错误分为两类:

1.编译时错误,一般指语法错误,编译无法通过,直接报错,可以直接看到(IDE集成开发环境会直接给出提示信息)。 2.运行时错误,符合语法规范,编译可以通过,逻辑错误,运行时直接报错。

增强for循环/foreach循环

java
int[] array = {1,2,3,4,5};

for (int num:array) {
  System.out.println(num)
}

举例:

java
// 有一组学员成绩,{ 99, 85, 82, 63, 60},新增一个学员成绩,添加到数组中,同时要求新的数组同样保持降序排列。
public class Test {
	public static void main(String[] args) {
		int array = { 99, 85, 82, 63, 60 };
    System.out.println("请输入新学员成绩")
    Scanner scanner = new Scanner(System.in)
    int score = scanner.nextInt();
    int [] array2 = new int[6]
    int index = 5;
    for (int i = 0; i < array.length; i++) {
      if (score > array[i]) {
        index = i;
        break;
      }
    }
    array2[index] = score
    for (int i = 0; i < index; i++) {
      array2[i] = array[i];
    }
    for (int i = index + 1; i < array2.length; i++) {
      array2[i] = array[i-1];
    }
    for (int i : array2) {
      System.out.println(i);
    }
	}
}

java.utils.Arrays提供了操作数组的方法,例如排序、查询

java
// 返回值类型 方法
// 比较两个数组是否相等(数组长度一致,元素相等)
boolean equals(array1, array2)

// 对数组进行升序排列
[] sort(array)

// 将array转换为字符串
String toString(array)

// 将数组的所有元素都填充成val
[] fill(array, val)

// 将数组复制成一个长度为length的新数组,并且数组元素保持不变
[] copyOf(array, length)

// 查询val在数组中的下标
int binarySearch(array, val)

二维数组

java
// 一维数组:
// 数据类型[] 数组名;
// 数据类型 数组名[];
public class Test {
	public static void main(String[] args) {
		//每个班有5名学生,一共5个班,以班为单位统计所有学生的成绩
		int[] array1 = {100,90,80,70,60};
		int[] array2 = {100,90,80,70,60};
		int[] array3 = {100,90,80,70,60};
		int[] array4 = {100,90,80,70,60};
		int[] array5 = {100,90,80,70,60};
	}
}

基本语法:

数据类型[][] 数组名; 数据类型 数组名[][];

1.声明 2.分配内存空间 3.赋值 4.使用

java
public class Test {
	public static void main(String[] args) {
    // 每班2名学生,一共3个班
    // 方式一:
    // int[][] array = {{100,90},{90,80},{80,70}};

    // 方式二:
    // 1.声明二维数组
		int[][] array; 
    //	2.分配内存空间
		array = new int[3][3];
		// 3.赋值
		array[0][0] = 100;
		array[0][1] = 90;
		array[1][0] = 80;
		array[1][1] = 70;
		array[2][0] = 60;
		array[2][1] = 50;
		// 4.使用
		System.out.println(array[2][1]);
	}
}

Java的内存模型

栈内存,堆内存

基本数据类型:8种基本数据类型对应的变量,存放在栈内存中。 引用数据类型:通过new关键字创建的变量,存在在栈内存和堆内存中。

int num = 10;

String str = new String("Java");

//栈内存和字符串常量池中 String str = "Java"; syso(str);

1.Java中的变量都是保存在栈内存中。
2.如果是基本数据类型,栈内存中保存的就是基本数据类型;
3.如果是引用数据类型,栈内存中保存的是堆内存中的内存地址,进而引用到堆内存中的数据。
java
public class Test2 {
	public static void main(String[] args) {
		//3个班级,每班5个学生,使用二维数组计算每个班的总成绩
		int[][] score = new int[2][3];
		Scanner scanner = new Scanner(System.in);
		for (int i = 0; i < score.length; i++) {
			System.out.println("-----请输入第"+(i+1)+"个班的学员成绩-----");
			for(int j = 0; j < score[0].length;j++) {
				System.out.print("请输入第"+(j+1)+"个学员的成绩:");
				score[i][j] = scanner.nextInt();
			}
		}
		int sum = 0;
		for(int i = 0; i < score.length; i++) {
			sum = 0;
			for(int sco:score[i]) {
				sum += sco;
			}
			System.out.println((i+1)+"班的学员总成绩是:"+sum);
		}
	}
}