数组的概述
什么是数组?
数组的理解:数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。
数组的常用概念?
- 数组名
- 元素
- 下标(或索引)
- 数组的长度:元素的个数
数组的特性?
- 数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括 基本数据类型和引用数据类型。
- 创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是 这块连续空间的首地址。
- 数组的 长度一旦确定,就不能修改。
- 我们可以直接通过下标(或索引)的方式调用指定位置的元素
数组的分类?
按照维数:一维数组、二维数组
按照数组元素的类型:基本数据类型元素的数组、引用数据类型元素的数组(即对 象数组)
一维数组的使用
1、一维数组的声明和初始化
- 静态初始化:数组的初始化和数组元素的赋值操作同时进行
int[] ids;//声明
ids = new int[]{1001,1002,1003,1004};//静态初始化赋值
或者:
int[] ids = {1001,1002,1003,1004};
- 动态初始化:数组的初始化和数组元素的赋值操作分开进行
//动态初始化
String[] names = new String[5];
//动态初始化赋值
names[0] = "aaa";
names[1] = "bbb";
names[2] = "ccc";
names[3] = "ddd";
names[4] = "eee";
2、数组元素的引用
- 通过下标的方式调用。数组的下标(或索引)从0开始的,到数组的长度
-1
结束。 - 数组元素的引用方式:数组名[数组元素下标]
3、如何获取数组的长度
- 每个数组都有一个属性length指明它的长度,例如:a.length 指明数组a的长 度(元素个数)
System.out.println(names.length);//
4、如何遍历数组
//直接使用数组名[索引]的方式取值
/*System.out.println(names[0]);
System.out.println(names[1]);
System.out.println(names[2]);
System.out.println(names[3]);
System.out.println(names[4]);*/
//循环的方式变量
for(int i = 0;i < names.length;i++){
System.out.println(names[i]);
}
5、数组元素的默认初始化值
数组是引用类型,它的元素相当于类的成员变量,因此数组一经 分配空间,其中的每个元素也被按照成员变量同样的方式被隐式 初始化
- 对于基本数据类型而言,默认初始化值各有不同
- 对于引用数据类型而言,默认初始化值为null
数组元素类型 | 元素默认初始值 |
---|---|
byte | 0 |
short | 0 |
short | 0 |
long | 0L |
float | 0.0F |
double | 0.0 |
char | 0 或写为:’\u0000’(表现为空) |
boolean | false |
引用类型 | null |
数组元素的默认初始化值
- 数组元素是整型:0
- 数组元素是浮点型:0.0
- 数组元素是char型:0或’\u0000’,而非’0’
- 数组元素是boolean型:false
- 数组元素是引用数据类型:null
6、一维数组的小练习
package com.atguigu.exer;
import java.util.Scanner;
/*
* 2. 从键盘读入学生成绩,找出最高分,并输出学生成绩等级。
成绩>=最高分-10 等级为’A’
成绩>=最高分-20 等级为’B’
成绩>=最高分-30 等级为’C’
其余 等级为’D’
提示:先读入学生人数,根据人数创建int数组,存放学生成绩。
*
*/
public class ArrayDemo1 {
public static void main(String[] args) {
//1.使用Scanner,读取学生个数
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学生人数:");
int number = scanner.nextInt();
//2.创建数组,存储学生成绩:动态初始化
int[] scores = new int[number];
//3.给数组中的元素赋值
System.out.println("请输入" + number + "个学生成绩:");
int maxScore = 0;
for(int i = 0;i < scores.length;i++){
scores[i] = scanner.nextInt();
//4.获取数组中的元素的最大值:最高分
if(maxScore < scores[i]){
maxScore = scores[i];
}
}
//5.根据每个学生成绩与最高分的差值,得到每个学生的等级,并输出等级和成绩
char level;
for(int i = 0;i < scores.length;i++){
if(maxScore - scores[i] <= 10){
level = 'A';
}else if(maxScore - scores[i] <= 20){
level = 'B';
}else if(maxScore - scores[i] <= 30){
level = 'C';
}else{
level = 'D';
}
System.out.println("student " + i +
" score is " + scores[i] + ",grade is " + level);
}
}
}
多维数组
Java 语言里提供了支持多维数组的语法。数组的 及维 是由开发者定义的。
1、什么是二维数组
二维数组本质上是以数组作为 数组元素 的数组,即“数组的数组”。简单说:二维数组的每一个元素是一个一维数组
2、二维数组的声明和初始化
-
静态初始化
int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
-
动态初始化
String[][] arr2 = new String[3][2];
3、如何调用数组的指定位置的元素
我们依然用下标指定
int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};
System.out.println(arr1[0][1]);//2
System.out.println(arr2[1][1]);//null
4、如何获取数组的长度
int[] arr4[] = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};
System.out.println(arr4.length);//3
System.out.println(arr4[0].length);//3
System.out.println(arr4[1].length);//4
5、如何遍历二维数组
int[] arr4[] = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};
for(int i = 0;i < arr4.length;i++){
for(int j = 0;j < arr4[i].length;j++){
System.out.print(arr4[i][j] + " ");
}
System.out.println();
}
6、数组元素的默认初始化值
二维数组分为外层数组的元素,内层数组的元素
int[][] arr = new int[4][3];
- 外层元素:arr[0],arr[1]等
- 内层元素:arr[0][0],arr[1][2]等
数组元素的默认初始化值
- 针对于初始化方式一:比如:
int[][] arr = new int[4][3];
外层元素的初始化值为:地址值
内层元素的初始化值为:与一维数组初始化情况相同 - 针对于初始化方式二:比如:
int[][] arr = new int[4][];
外层元素的初始化值为:null
内层元素的初始化值为:不能调用,否则报错。