数组

数组的概述

什么是数组?

数组的理解:数组(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
数组元素类型元素默认初始值
byte0
short0
short0
long0L
float0.0F
double0.0
char0 或写为:’\u0000’(表现为空)
booleanfalse
引用类型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
    内层元素的初始化值为:不能调用,否则报错。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值