java数组学习
第一堂课:
知识点:
数组不是基本数据类型
数组出现解决:数据过多问题
数组:是一种容器,存储同一种数据类型的容器
数组定义的格式:
数组类型[] 数组名字;
String[] args = new String[10]
[ ]:表示是一个数组容器
例题:
1.数组下标越界:索引时超出数组长度
1 public void arrFun1(){ 2 //数组格式1 3 int[] i = new int[]{1,2,3,4}; 4 //数组格式2 5 int[] j = {1,2,3,4}; 6 System.out.println(i[0]); 7 //结果:1 8 System.out.println(i[4]); 9 //ArrayIndexOutOfBoundsException: 4 10 //报错:数组下标越界异常 11 }
2.数组空指针异常:没有初始值,没有空间,访问时就会给出空值异常
1 public void arrFun2(){ 2 //空值异常 3 int[] x = null; 4 System.out.println(x[0]); 5 //NullPointerException 6 }
3.数组长度的获取:用数组名.length获取数组长度
1 public void arrFun3(){ 2 //求数组长度 3 int[] a = new int[4]; 4 int[] b = {2,3,4,5,6}; 5 System.out.println("数组长度"+b.length); 6 }
4.数组遍历:将数组里的值一个一个获取,使用循环,数组索引从0开始的,最大的索引是Length-1
public void arrFun4ss(){
/*
数组遍历
将数组中的元素,一个个打印出来,
数组{3,1,5,6,7},每次增长1
输出:{3,1,5,6,7}
最后一个数值被打印,逗号不能输出
*/
1 int[] m = {3,1,5,6,7}; 2 System.out.print("{"); 3 for(int i = 0;i<m.length;i++){ 4 if(i==m.length-1){ 5 //判断数组是否到最后一个数值,如果到了就不加","; 6 7 System.out.print(m[i]); 8 }else { 9 System.out.print(m[i] + ","); 10 } 11 } 12 System.out.print("}"); 13 }
第二堂课:练习
char类型数组的区别
/*
1.char类型数组,输出数组名字的时候
出现的不是数组,数组中每个元素
println()默认char数组,进行自动遍历
*/
1 public void arrFun1ss(){ 2 String[] str = {"大乔","安琪拉","露娜","孙尚香"}; 3 System.out.println(str);//输出的是内存地址([Ljava.lang.String;@39a054a5) 4 System.out.println(str[0]);//输出大乔 5 6 char[] ch = {'a','b','c','d','e'}; 7 System.out.println(ch);//输出的不是地址,是具体的值(abcde) 8 //重点,要考的 9 System.out.println("ch:"+ch);//输出地址,字符编程字符串,所以打印的是地址(ch:[C@71bc1ae4) 10 }
求数组最大值
/*
2.获取数组的最大值
通过两值互相比较,获取最大的值赋值
*/
1 public void arrFun2ss(){ 2 int[] a = {5,2,7,1,8,12}; 3 int max = a[0]; 4 for (int i = 0; i < a.length; i++){ 5 if(a[i] > max){//比较两个值中最大的 6 max = a[i];//将最大值赋给max 7 } 8 } 9 System.out.println(max);//输出最大值:12 10 }
用索引求最大值
/*
3.获取数组的最大值
通过索引的方式
*/
1 public void arrFun3ss(){ 2 int[] a = {3,4,5,6,7,1}; 3 int max = 0;//定义一个索引 4 for (int i = 0;i<a.length;i++){ 5 if(a[i]>a[max]){//得到的值大于索引,两两对比 6 max= i;//值赋值给索引 7 } 8 } 9 System.out.println(a[max]); 10 }
查表法
/*
4.键盘输入0~6之间的数,不需要做非法数据的判断
输入0,输出星期日,1 星期一 ....6 输出星期六
数组查表法,根据索引,找数祖上对应的元素
*/
1 public void arrFun4ss() { 2 Scanner sc = new Scanner(System.in);//键盘输入 3 String[] arr = {"星期日", "星期一","星期二","星期三","星期四","星期五","星期六"}; 4 System.out.println("请输入一个0~6之间的整数"); 5 int i = sc.nextInt(); 6 System.out.println(arr[i]); 7 }
第三堂课:二维数组
1 package classhomework; 2 /* 3 二维数组 4 */ 5 public class ArrayDemo3ss { 6 public static void main(String[] args){ 7 int[] a = new int[3]; 8 int[][] b = new int[3][2]; 9 //{{1,2},{3,4}.{5,6}} 10 ArrayDemo3ss as = new ArrayDemo3ss(); 11 //as.arrfun1ss(); 12 as.aeeefun2ss(); 13 } 14 public void arrfun1ss(){ 15 /* 16 1.二维数组 17 1.1 定义方式 18 int[][] arr = new int[3][3]; 19 */ 20 int[][] a = new int[3][2]; 21 int[][] b = {{1,2},{3,4},{5,6}}; 22 System.out.println("a:"+a);//输出地址:a:[[I@1b6d3586 23 System.out.println("b:"+b);//输出地址:b:[[I@4554617c 24 System.out.println("b[0]:"+b[0]);//输出地址:b[0]:[I@74a14482 25 System.out.println("b[0][0]:"+b[0][0]);//输出数值:1 26 27 int[][] c = new int[3][]; 28 c[0]=new int[2];//第一个小数组有两个值 29 c[0][0] = 2; 30 31 c[1]=new int[3]; //{{1,2},{3,4,5}} 32 System.out.println("c[0][0]"+c[0][0]);//输出数值:2 33 } 34 public void aeeefun2ss(){ 35 /* 36 2.二维数组的遍历 37 嵌套循环的使用 38 */ 39 int[][] a = {{1,2},{3,4},{5,6,7}}; 40 for (int i = 0;i<a.length;i++){//外循环循环次数就是小数组的个数 41 for (int j = 0;j < a[i].length;j++){ //a[i]指小数组 42 System.out.print(a[i][j]); 43 } 44 System.out.println(); 45 /* 46 输出数组: 47 12 48 34 49 567 50 */ 51 } 52 } 53 54 }