java基础学习day06(数组)

数组的概述
1.理解:数组是多个相同数据类型按一定顺序排列的集合,并使用一个名字命名,
并通过编号的方式对这些数据进行统一管理。

2.数组的概念:
数组名
元素
角标、下标、索引
数组的长度:元素的个数

3.数组的特点
(1)数组是有序排列的
(2)数组属于引用数据类型的变量,数组的元素,既可以是基本数据类型,也可以是引用数据类型
(3)创建数组对象会在内存中开辟一整块连续的空间
(4)数组的长度一旦确定,就不能修改

4.数组的分类:
(1)按照维数:一维数组、二维数组…
(2)按照数组的元素类型,基本数据类型元素的数组、引用数组类型元素的数组

5.一位数组的使用
(1)一维数组的声明和初始化
(2)如何调用数组的指定位置的元素
(3)如何获取数组的长度
(4)如何遍历数组
(5)数组元素的默认初始化值(数组元素是整形都是0、浮点型是0.0、char型是 0 不是’0’、
boolean型是false、数组元素是引用数据类型时,默认为null,不是"null")
(6)数组的内存解析

public class ArrayTest {
     
	
	public static void main(String[] args) {
     
		//1.一维数组的声明和初始化
		int num;//声明
		num = 10;//初始化
		int id = 1001; //声明+初始化
		
		int[] ids;//声明
		//静态初始化:数组的初始化和数组元素的赋值操作同时进行
		ids = new int[] {
     1001,1002,1003,1004};
		//动态初始化:数组的初始化和数组元素的赋值操作分开进行
		String[] names = new String[5];
		
		//总结:数组一旦初始化完成,其长度就确定了
		
		//2.如何调用数组的指定位置的元素:通过角标的方式调用。
		//数组的角标(索引)从0开始的,到数组的长度-1结束
		names[0] = "小小";
		names[1] = "小明";
		names[2] = "小亮";
		names[3] = "小付";
		names[4] = "小华";
		//names[5] = "错误"; 超过数组的角标
		
		//3.如何获取数组的长度  属性:length
		System.out.println(names.length);
		System.out.println(ids.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.数组元素的默认初始化值
		int[] arr = new int[4];
		for(int i = 0; i < arr.length;i++) {
     
			System.out.println(arr[i]);
		}
	}
}

一维数组的练习:
从键盘输入五个学生成绩,最高分,与最高分差十分为A,二十为B,三十为C,其余为D

import java.util.Scanner;

public class ArrayDemo {
     
	public static void main(String[] args) {
     
		//1.使用Scanner,读取学生人数
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入学生人数:");
		int number = scan.nextInt();
		
		//2.创建数组
		int[] arr = new int[number];
		
		//3.给数组元素赋值
		System.out.println("请输入" + number + "的成绩");
		for(int i = 0;i < arr.length;i++) {
     
			arr[i] = scan.nextInt();
		}
		
		//4.获取数组中的最大值,最高分
		int max = 0;
		for(int i = 0;i < arr.length;i++) {
     
			if(max < arr[i]) {
     
				max = arr[i];
			}
		}
			System.out.println("最高分:" + max);
		//5.根据每个学生成绩与最高分的差值,得到每个学生的等级和成绩
		char c;
		for(int i = 0;i < arr.length;i++) {
     
			if(max - arr[i] <= 10) {
     
				c = 'A';
			}else if(max - arr[i] <= 20) {
     
				c = 'B';
			}else if(max - arr[i] <= 30) {
     
				c = 'c';
		}else {
     
				c = 'D';
			}
			System.out.println("学生" + i + "成绩是:" + arr[i] + "  等级是:" + c);
		}
		
	}
}

1.二维数组的理解:
对于二维数组我们可以看成是一维数组array1又作为另一个一维数组array2的元素而存在
其实,从数组底层的运行机制来看,其实没有多维数组

2.二维数组的使用:
(1)二维数组的声明和初始化
(2)如何调用数组的指定位置的元素
(3)如何获取数组的长度
(4)如何遍历数组
(5)数组元素的默认初始化值
(6)数组的内存解析

public class ArrayTest2 {
     
	public static void main(String[] args) {
     
		//(1)二维数组的声明和初始化
		int[] arr1 = new int[] {
     1,2,3}; //一维数组
		//静态初始化
		int[][] arr2 = new int[][] {
     {
     1,2,3},{
     4,5},{
     6,7,8}};
		//动态初始化1
		String[][] arr3 = new String[3][2];//标准
		String[] arr6[] = new String[3][];//这样写也是正确的
		//动态初始化2
		String[][] arr4 = new String[3][];
		
//		错误的
//		String[][] arr5 = new String[][3];
//		String[3][4] arr4 = new String[][];
		
		//(2)如何调用数组的指定位置的元素
		System.out.println(arr2[0][2]);//3
		System.out.println(arr3[1][1]);//null
		
		arr4[1] = new String[4];
		System.out.println(arr4[1][0]);
		
		//(3)如何获取数组的长度
		System.out.println(arr2.length); //3
		System.out.println(arr2[0].length);//3
		System.out.println(arr2[1].length);//2
		
		//(4)如何遍历二维数组
		for(int i = 0; i < arr2.length;i++) {
     
			for(int j = 0;j < arr2[i].length;j++) {
     
				System.out.print(arr2[i][j] + " ");
			}	
			System.out.println();
		}
		
		//(5)数组元素的默认初始化值
		int[][] arr = new int[4][3];
		System.out.println(arr[0]); //地址值 [I@15db9742
		System.out.println(arr[0][0]); //0
		
		float[][] arr11 = new float[4][3];
		System.out.println(arr11[0]); //地址值
		System.out.println(arr11[0][0]);//0.0
		
		String[][] arr12 = new String[4][3];
		System.out.println(arr12[0]); //地址值
		System.out.println(arr12[0][0]);//null
		
		/*总结:比如int[][] arr = new int[4][3];
				外层元素的初始化值为:地址值
				内层元素的初始化值:与一维数组初始化情况相同
		
				比如String[][] arr12 = new String[4][];
				外层元素的初始化值为:null
				内层元素的初始化值:不能调用,否则报错
		*/	
	}
}

练习:int[][] { {3,5,8},{12,9},{7,0,6,4}};求和

public class ArrayDemo2 {
     
	public static void main(String[] args) {
     
		int arr[][] = new int[][] {
     {
     3,5,8},{
     12,9},{
     7,0,6,4}};
		int sum = 0;
		for(int i = 0;i < arr.length;i++) {
     
			for(int j = 0;j < arr[i].length;j++) {
     
				sum += arr[i][j];
			}
		}
		System.out.println("总和:"+ sum);
	
	}
}

你可能感兴趣的:(java核心基础笔记,java)