hooyantsing's Blog

第8次课程

字数统计: 1.1k阅读时长: 5 min
2019/04/26

源辰74班

第8次课程

04.26.2019

内容

1.创建数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class test1 {
    public static void main(String[] args) {
       //数组声明
       //类型[] 数组名;   //类型:基本型/引用型
       int[] x;
       //数组初始化
       x = new int[10];
       //数组声明,同时初始化
       int[] xx    = new int[10];    //方式一
       int   xxx[] = new int[10];    //方式二
       
       double[] y = new double[10];
       String[] z = new String[10];
       // hash码(哈希码) 地址
       //[I@15db9742  "["代表数组,"I"代表int型,此后为地址
       System.out.println(x);
       //[D@6d06d69c   "D"代表double型
       System.out.println(y);
       //[Ljava.lang.String;@7852e922   
       System.out.println(z);
       
       //逐个打印数组内的值
       for(int i=0;i<10;i++) {
           //数组初始化未指定值,默认为0(int)  0.0(double) null(String)
           System.out.println(x[i]+"\t"+y[i]+"\t"+z[i]);
       }
       
       //更多的定义方式
       int[] a = {1,2,3,4};
       double[] b = new double[]  {1.0,2.0,3.0,4.0};
       //数组下标从0开始,数组长度可以以属性.length
       System.out.println(x.length);
    }
}

2.引用数组和复制数组

9269c9739bd2887b1b916eb599d2699c.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class test2 {
    public static void main(String[] args) {
       //引用,相当于x的别名为y。x和y共用一个地址,x和y为同一个数组。
       int[] x = {1,2,3,4};
       int[] y = x;
       
       //改变y中的值,实际上也改变了x中的值
       y[0] = 9;
       System.out.println(x[0]);
       System.out.println(y[0]);
       
       //创建一个新的数组,并且复制原数组xx的值。xx和z为两个不同的数组。
       int[] xx = {1,2,3,4};
       int[] z = new int[xx.length];
       for(int i=0;i<xx.length;i++) {
           z[i] = xx[i];
       }
       
       //改变了xx中的值,不影响另一个复制的数组z中的值。
       xx[0] = 9;
       System.out.println(xx[0]);
       System.out.println(z[0]);
    }
}

3.数组越界错误

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class test3 {
    
    public static void main(String[] args) {
       int[] x = {1,2,3};
       //打印数组元素个数
       System.out.println(x.length);
       
       //错误:越界    (超出了数组初始化的范围)
       //java.lang.ArrayIndexOutOfBoundsException:  3
       System.out.println(x[3]);
       
       int[] y =null;
       
       //错误:空指针  (数组声明后,没有初始化申请空间)
       //java.lang.NullPointerException
       System.out.println(y[0]);
       
       
    }
}

4.方法(函数)的调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import java.util.*;
public class test4 {
    public static void main(String[] args) {
       //调用 随机生成数组 方法
       int[] x = genArr(10);
       //调用 打印数组 方法
       printArr(x);
       Scanner sc = new Scanner(System.in);
       System.out.println();
       System.out.println("请输入要查找的元素:");
       int num = sc.nextInt();
       //调用 查找功能 方法
       int index = find(num,x);
       System.out.println(index==-1?"查无此元素":"数组中存在这个元素,它的位置是:"+(index+1));
       //调用 查最大值 方法
       int max = findMax(x);
       System.out.println("最大值为:"+max);
       //调用 查最小值 方法
       int min = findMin(x);
       System.out.println("最小值为:"+min);
       
    }
    
    //查找功能     方法(函数)
    public static int find(int x,int[] arr)  {
       int index = -1;
       for(int i=0;i<arr.length;i++) {
           if(x==arr[i]) {
               index = i;
               break;
           }
       }
       return index;
    }
    
    //随机生成数组
    public static int[] genArr(int length) {
       Random r = new Random();
       int[] arr = new int[length];
       for(int i=0;i<arr.length;i++) {
           arr[i]=r.nextInt(100);
       }
       return arr;
    }
    
    //打印数组
    public static void printArr(int[] arr) {
       for(int i=0;i<arr.length;i++) {
           System.out.print(arr[i]+"\t");
       }
    }
    
    //查最大值
    public static int findMax(int[]arr) {
       int max = arr[0];
       for(int i=0;i<arr.length;i++) {
           if(max<arr[i]) {
               max = arr[i];
           }
       }
       return max;
    }
    
    //查最小值
    public static int findMin(int[]arr) {
       int min = arr[0];
       for(int i=0;i<arr.length;i++) {
           if(min>arr[i]) {
               min = arr[i];
           }
       }
       return min;
    }
}

5.二维数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.util.*;
public class erweishuzu {
    public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       System.out.println("请输入行列:(空格隔开)");
       int rows = sc.nextInt();
       int cols = sc.nextInt();
       
       int[][] array = new int[rows][cols];
       System.out.println("刚生成的原数组如下:");
       show(array);
       System.out.println("随机生成元素后数组如下:");
       gen(array);
       show(array);
    }
    
    //初始化二维数组的元素
    public static void gen(int[][] arr) {
       Random r = new Random();
       for(int i=0;i<arr.length;i++) {
           for(int j=0;j<arr[i].length;j++)  {
               arr[i][j] = r.nextInt(10);
           }
       }
    }
    
    //打印二维数组
    public static void show(int[][] arr) {
       for(int i=0;i<arr.length;i++) {
           for(int j=0;j<arr[i].length;j++)  {
               System.out.print(arr[i][j]+"   ");
           }
           System.out.println();
       }
    }
}
CATALOG