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 }

 

posted @ 2021-03-29 14:05  轩er  阅读(47)  评论(0)    收藏  举报