疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java中的数组笔记


 

 
1、定义:相同数据类型的数据的组合。
 
    不使用数组的定义方式:
 
int i1 = 1;
int i2 = 2;
int i3 = 3;
    使用一维数组的定义方式:
 
      1、静态初始化:在声明并初始化数组与给数组相应的元素赋值操作同时进行;
 
          int[] scores = new int[]{72,90,59};  
 
      2、动态初始化:在声明并初始化数组与给数组相应的元素赋值操作分开进行;       
 
复制代码
1 int[] scores1 = new int[3];
3    socres1[0] = 72;
5    socres1[1] = 90;
7    socres1[2] = 59;
复制代码
  2、数组的初始化问题(以下的初始化为错误的初始化方式): 
 
1 String[] names = new String[5]{"AA","BB","CC"}
3 int i = new int[10];
5 int i = new int[];
      注意:不管是动态初始化还是静态初始化,一定要在创建的时候就指明数组的长度;
 
  3、数组的引用:
 
      1、通过数组下角标的方式来进行引用;下角标从0开始到n-1结束,其中n为数组的长度。
 
scores[0] = 87;
scores[1] = 89;
scores[3] = 98;
      2、数组的长度通过length属性来调用;
 
System.out.println(names.length);
System.out.println(scores.length);
      3、如何遍历数组:使用循环来进行遍历;
 
for(int i = 0,i < scores1.length;i++){
 
  System.out.println(scores1[i]);
 
}
代码展示:
 
复制代码
 1 public class TestArray {
 2     public static void main(String[] args){
 3         int i1;
 4         i1 = 12;
 5         boolean b = true;
 6         //1.如何定义一个数组
 7         //1.1数组的声明
 8         String[] names;
 9         int[] scores;
10         //1.2初始化
11         //第一种:静态初始化:初始化数组与给数组元素赋值同时进行。
12         names = new String[]{"张三","李四","王五"};
13         //第二种:动态初始化:初始化数组与给数组元素赋值是分开进行的;
14         scores = new int[4];
15         //2.如何调用相应的数组元素:通过数组元素的下角标的方式来调用。
16         //下角标从0开始,到n-1结束。其中N表示的是数组的长度。
17         scores[0] = 87;
18         scores[1] = 89;
19         scores[3] = 98;
20         //3。数组的长度:通过数组的length属性。
21         System.out.println(names.length);
22         System.out.println(scores.length);
23         //4.如何遍历数组元素
24 //        System.out.println(names[0]);
25 //        System.out.println(names[1]);
26 //        System.out.println(names[2]);
27         for(int i = 0;i < names.length;i++){
28             System.out.println(names[i]);
29         }
30     }
31 }
复制代码
二维数组:
 
复制代码
 1 //1.二维数组的初始化
 2 scores2 = new int[][]{{1,2,3},{3,4,5},{6}};//静态初始化
 3 names = new String[6][5];//动态初始化的方式一
 4 names = new String[6][];//动态初始化的方式二
 5 names[0] = new String[5];
 6 names[1] = new String[4];
 7 names[2] = new String[7];
 8 names[3] = new String[5];
 9 names[4] = new String[8];
10 names[5] = new String[5];
复制代码
2、如何引用二维数组的元素:
 
1 //2.如何来引用具体的某一个元素
2 int[][] i = new int[3][2];//int[] i[] = new int[3][2];
3 i[1][0] = 90;
4 i[2][1] = 100;
3、二维数组的长度
 
1 //二维数组的长度:length属性
2 System.out.println(i.length);
3 //二维数组中元素的长度
4 System.out.println(i[0].length);
5 System.out.println(names.length);
6 System.out.println(names[4].length);
4、遍历二维数组
 
1 for(int m = 0; m < scores2.length; m++){//控制行数
2     for(int n = 0; n < scores2[m].length; n++){
3         System.out.print(scores2[m][n] + " ");
4     }
5     System.out.println();
6 }
5、关于数组元素的默认初始化值
 
  1、byte short int long 而言:0;
 
  2、float double 而言:0.0;
 
  3、char而言:空格
 
  4、boolean而言:false
 
  5、引用类型变量而言:null
 
  
 
复制代码
 1 public class TestArray {
 2     public static void main(String[] args){
 3         
 4         //对于基于基本数据类型的变量创建的数组:byte short int long float double char boolean
 5         //1.对于byte short int long而言,创建数组以后,默认值为0;
 6         int[] scores = new int[4];
 7         scores[0] = 89;
 8         scores[3] = 90;
 9         for(int i = 0; i < scores.length; i++){
10             System.out.println(scores[i]);
11         }
12         
13         byte[] scores1 = new byte[4];
14         scores1[0] = 89;
15         scores1[3] = 90;
16         for(int i = 0; i < scores1.length; i++){
17             System.out.println(scores[i]);
18         }
19         //2.对于float double而言,默认值为0.0;
20         float[] f = new float[3];
21         f[0] = 1.2F;
22         for(int i = 0; i < f.length; i++){
23             System.out.println(f[i]);
24         }
25         System.out.println("我是分割线~~~~~~~~~~");
26         //3.对于char而言,默认值为空格
27         char[] c = new char[3];
28         for(int i = 0; i < c.length; i++){
29             System.out.println(c[i]);
30         }
31         System.out.println("我是分割线~~~~~~~~~~");
32         
33         //4.对于boolean而言,默认为false
34         boolean[] b = new boolean[3];
35         for(int i = 0; i < b.length; i++){
36             System.out.println(b[i]);
37         }
38         //5.对于引用类型的变量构成的数组而言,默认初始化值为null,以String为例
39         String[] strs = new String[4];
40         strs[0] = "AA";
41         strs[1] = "BB";
42         //strs[2] = "CC";
43         strs[3] = "DD";
44         //遍历数组元素
45         for(int i = 0; i < strs.length; i++){
46             System.out.println(strs[i]);
47         }
48         
49         System.out.println("我是分割线~~~~~~~~~~");
50         Person[] pers = new Person[3];
51         for(int i = 0; i < pers.length; i++){
52             System.out.println(pers[i]);
53         }
54         //关于数组在内存中的结构
55         //其他的声明方式:
56         int[] myInt = {12,13,14};
57         int[] myInt1;
58         myInt1 = new int[]{12,13,14};
59     }
60 }
复制代码
6、二维数组的内存结构:
 
 
 
 
 
7、数组的常见异常:
 
复制代码
 1 public class TestException {
 2     public static void main(String[] args){
 3         //1、数组下标越界的异常: java.lang.ArrayIndexOutOfBoundsException
 4         int[] i = new int[10];
 5         //i[0] = 90;
 6         //i[10] = 99;
 7         
 8         //for(int m = 0; m <= i.length; m++){
 9             //System.out.println(i[m]);
10         //}
11         //2、空指针异常: java.lang.NullPointerException
12 //        第一种:
13 //        boolean[] b = new boolean[3];
14 //        b = null;
15 //        System.out.println(b[0]);
16         
17         //第二种:java.lang.NullPointerException
18 //        String[] str = new String[4];
19 //        //str[3] = new String("AA");//str[3] = "AA";
20 //        System.out.println(str[3].toString());
21         //第三种:java.lang.NullPointerException
22         int[][] j = new int[3][];
23         j[2][0] = 12;
24         
25     }
26 }
复制代码
8、数组常用的算法问题(求数组元素的最大值、最小值、和、平均数、数组的赋值和反转)
 
复制代码
 1 public class TestArray3 {
 2     public static void main(String[] args) {
 3         int[] arr = new int[] { 12, 43, 9, 0, -65, -99, 100, 9};
 4         //最大值
 5         int max = arr[0];
 6         for(int i = 1; i < arr.length; i++){
 7             if(max < arr[i]){
 8                 max = arr[i];
 9             }
10         }
11         System.out.println("数组的最大值为:" + max);
12         //最小值
13         int min = arr[0];
14         for(int i = 1; i < arr.length; i++){
15             if(min > arr[i]){
16                 min = arr[i];
17             }
18         }
19         System.out.println("数组的最小值为:" + min);
20         //总和
21         int sum = 0;
22         for(int i = 0; i < arr.length; i++){
23             sum += arr[i];
24         }
25         System.out.println("总和为:" + sum);
26         //平均数
27         int avg = 0;
28         avg = sum / arr.length;
29         System.out.println("平均值为:" + avg);
30         
31         //数组的复制
32         int[] arr1 = new int[arr.length];
33         for(int i = 0; i < arr1.length; i++){
34             arr1[i] = arr[i];
35         }
36         //数组的反转
37             for(int i = 0; i < arr.length/2; i++){
38                 int temp = arr[i];
39                 arr[i] = arr[arr.length-1-i];
40                 arr[arr.length - 1 - i] = temp;
41             }
42         //遍历数组元素
43         for(int i = 1; i < arr.length; i++){
44             System.out.print(arr[i] + " ");
45         }
46     }
47 }