数组的静态初始化书写方式,二维数组

一、数组的静态初始化。

1、数组的静态初始化 及内存图
静态初始化的格式:

	格式1: 数据类型[] 数组名 =new 数据类型[]{元素1,元素2,元素3……}
			
			例如: int[] arr = new int[]{2,3,5,6};
	
	格式2:
			数组静态初始化的 格式2 ,是格式1的简写方式。
			数据类型[] 数组名 = {元素1,元素2,元素3……};
			
			例如: String[] arr2 = {"I","like","teacher!"};
			
			
	内存图解析:
		1、局部变量进栈
				成员变量:在类中,方法外声明的变量,称之为,成员变量
				局部变量: 方法内,或者方法上的变量,称之为局部变量。
				
		2、 方法进栈
		3、new 出来的对象进堆。
				

		补充: char 类型数据的默认值\u0000

				每个创建在堆内存中数组
				都有对应的地址值,方便变量引用。

2、通过练习,书写两种静态初始化,并且,我们测试两个常见运行时异常。
空指针异常 : NullPointerException
数组角标越界异常: ArrayIndexOutOfBoundsException

	** 空指针异常出现场景: 当我们访问的数组不存在了的时候,就会报这个错
						被内存删除,销毁了。
						(内存有自动清理不用的垃圾的机制。)

	** 数组角标越界异常出现场景:
				访问了,不存在的数组角标的时候,就会报这个异常。
				
	public class Test01_Exception {
		public static void main(String[] args) {
			
			//创建第一种格式的静态初始化数组。
			String[] ban_ji = new String[]{"A277班","A281班","A267班"};
			
			//创建第二种格式的静态初始化数组。
			double[] salary = {100.32, 23.32,19999999.11,44.55};
			
			//验证数组角标越界异常。访问不存在的索引。
			//		System.out.println(ban_ji[3]);
			
			//验证空指针异常。当变量在内存中没有引用的时候,访问该变量就会空指针。
			salary = null;	// 给一个变量的引用置空。手动让系统回收堆内存东西
			System.out.println(salary);	//null
			System.out.println(salary[2]);		
		}
	}

3、数组的遍历。怎么样获取到数组中每一个元素。
获取到这些元素,可以用来计算,输出等等。

for(int i = 0; i < 数组的长度; i++){
	数组类型  元素变量名 = 数组名[i];
	数组中的元素可以做很多操作,比如用来计算,用来输出查看结果
}


	public class Test02_BL {
		public static void main(String[] args) {
			//静态初始化,定义一个数组。
			int[] arr ={21,32,44,56,31,456};
			
			//遍历数组。for循环初始化条件初始值为数组最小角标0
			// 判断条件,初始化变量小于数组长度,
			for (int i = 0; i < arr.length; i++) {
				//获取数组每一个元素
				int a  = arr[i];
				//输出打印数组的每一个元素。
				System.out.print(a +",");
			}
			
		}
	}

4、数组的练习,求数组中,最大值。

需求: 定义int类型一个数组,并且循环遍历数组
		然后找到这个数组中的,最大的一个值是多少。

分析:  静态初始化,直接赋值一些 int类型的数值。
		通过for循环遍历数组。获取每一个元素
		判断该元素,是否是最大值?
			先默认第一个元素是最大值。
			在循环外定义一个变量 int max =arr[0];
			
			遍历每一个元素,和max 进行比较,
			比max 大的,就赋值给max 
			
			最后遍历完所有,则max 就是数组中的最大值。

代码:
public class Test03_GetMax {
	public static void main(String[] args) {
		//数组静态初始化,直接赋值一些 int类型的数值、
		int[] arr = {23,34,21,22,57,88,567};
		
		//先默认第一个元素是最大值。
		//在循环外定义一个变量 int max =arr[0];
		int max =arr[0];
		
		//通过for循环遍历数组。获取每一个元素
		for (int i = 0; i < arr.length; i++) {
			//遍历每一个元素,和max 进行比较,
			int  a = arr[i];
			if (a > max) {
				//比max 大的,就赋值给max 
				max = a ;
				System.out.println(max);
			}
		}
		System.out.println("----------------------");
		System.out.println(max);
	}
}

5、数组元素的反转练习。

需求: 定义一个int 类型的数组。写6-10个元素。

	然后在遍历该数组的过程中,交互数组元素的位置,
	实现,数组中,元素位置的反转。
	
	例如:	int a = {1,2,3,4,5,6};
			反转后 : int a ={6,5,4,3,2,1};
					
			
	提示:通过数组角标的交换。重新赋值。
			可以创建一个中间变量,用来交换接收
	
	
	
	具体代码:
	public class Test03_FZ {
		public static void main(String[] args) {
			int[] arr = {1,2,3,4,5,6};
			//反转后 : int[] a ={6,5,4,3,2,1};
			
			for (int i = 0; i < arr.length/2; i++) {
				//在循环中定义一个零时变量。
				int temp =0;
				//把第一个元素赋值给零时变量
				temp = arr[i];
				//把最后一个元素给第一个元素。
				arr[i] = arr[arr.length -1-i];
				// 把temp 现在的值,赋值给最后面的元素。
				arr[arr.length -1-i] = temp;
			}
			//完成反转后,遍历,输出 数组的元素。
			for (int i = 0; i < arr.length; i++) {
				System.out.print (arr[i] +",");
			}
		}
	}

	快捷键扩展:
		修改一边量名,让所有该变量位置的名字统一改变。
		选中变量名  alt + shift + r  组合键操作。

6、查找,数组中,指定的 元素(练习)
通过索引,找元素。

需求:
	之前想输入一个数,让他对应输出星期几。
	switch case语句。
	
	用数组的方式来实现:
	String[] arr = {"","星期一","星期二","星期三","星期四","星期五","星期六","星期日",}; 


注意:(知识点)
(1)声明赋值问题
	动态初始化,声明和赋值可以写在一行,也可以不写在一行。
	int[] arr ;
	arr = new int[4];

	* 但是静态初始化,必须,声明和赋值都在同时完成。
	
(2)动静结合的方式声明一个数组行不行?
		int[] arr = new int[3]{1,2,3,4,5,6};
		注意: 动静结合方式初始化数组不行
				直接会报错。
	
	
	
分析: 如何实现	
		
		键盘录入一个数。1-7 之间。
		然后程序代码,执行,输出对应的星期几。
		
步骤:
		(1)创建键盘录入对象,导包,
		(2)定义一个String[]类型的数组。元素是星期几。
		(3)判断键盘录入对象,接收的数是多少,
		(4)遍历 String 数组,
		(5)输出对应索引的元素。
	
	
代码:
	
public class Test05_XQ {
	public static void main(String[] args) {
		//(1)创建键盘录入对象,导包,
		Scanner sc = new Scanner(System.in);
		
		//(2)定义一个String[]类型的数组。元素是星期几。
		String[] week = {"","星期一","星期二","星期三","星期四","星期五","星期六","星期日"}; 
		
		//(3)判断键盘录入对象,接收的数是多少,
		System.out.println("请输入1-7之间的 数,为您输出对应的星期:");
		int num = sc.nextInt();
		
		//(4)遍历 String 数组,
		for (int i = 0; i < week.length; i++) {
			//(5)输出对应索引的元素。
			if (num == i) {
				System.out.println("您输入的数,对应的是:" + week[i]);
			}
		}
	}
}

7、通过指定内容,查找数组中,是否有相同元素。
如果有,就返回它的对应的索引。

需求: 要求,编写方法,方法返回值为数组的元素类型。
		然后参数列表是,我们想要查找的内容。
		
		然后在main 方法中,调用该方法,
		如果数组中有与查找指定内容匹配的元素
		那么就返回 他的索引给调用的地方,用变量接收。
		并输出打印,他的索引。

8、二维数组的创建和基本格式。(了解)
(1)二维数组的格式 1
int[][] arr = new int[3][20];

	(2)二维数组的格式 2 
		int[][] arr2 = new int[3][];

	 (3) 二维数组的格式 3 
		int[][]  arr3 = {{1,2,3,4},{3,44},{2,3,4},{5,6}};

9、 遍历二维数组。
需求: 遍历二维数组,把二维数组中的元素输出查看。

	提示:用双层for循环,来实现。遍历二维数组。

10、 求int 类型二维数组中,所有元素的和。

需求:	
	定义一个二维数组代表年。
		定义二维数组中的 一维数组,代表季度。
		在代表季度的数组中,写入每个月的销售额的对应数值。
		
		然后通过遍历二维数组,获取到每个一维数组元素。
		进行累加求和后,得到全年 整体 销售额是多少。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值