通过实例入门Java数组的使用

数组是多个相同类型数据的组合,实现对这些数据的统一管理。数组中的元素可以是任何数据类型,包括基本类型和引用类型。数组属引用类型,数组型数据是对象(object),数组中的每个元素相当于该对象的成员变量。

声明和使用数组

//一维数组的声明方式: 
//type  var[] 或 type[]  var;
//例如:
		   int a[];
	   	   int[] a1;
		   double  b[];
		   Mydate[] c;  //对象数组
//Java语言中声明数组时不能指定其长度(数组中元素的数), 例如: int a[5];    //非法

//Java中使用关键字new创建数组对象
//创建基本数据类型一维数组对象
public class Test{
           public static void main(String args[]){
      		int[] s;
      		s = new int[10];
      		for ( int i=0; i<10; i++ ) {
            	       s[i] =2*i+1;
	         	System.out.println(s[i]);
      		}
      }
}

常见问题

数组脚标越界异常(ArrayIndexOutOfBoundsException)

int[] arr = new int[2];

System.out.println(arr[2]);

访问到了数组中的不存在的脚标时发生。

空指针异常(NullPointerException)

int[] arr = null;

System.out.println(arr[0]);

arr引用没有指向实体,却在操作实体中的元素时。

多维数组

二维数组[][]:数组中的数组

格式1(动态初始化):int[][] arr = new int[3][2];    int[] n = new int[3];

 定义了名称为arr的二维数组

 二维数组中有3个一维数组

 每一个一维数组中有2个元素

 一维数组的名称分别为arr[0], arr[1], arr[2]

 给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;

格式2(动态初始化):int[][] arr = new int[3][];

 二维数组中有3个一维数组。

 每个一维数组都是默认初始化值null (注意:区别于格式1)

 可以对这个三个一维数组分别进行初始化

  arr[0] = new int[3];    arr[1] = new int[1];   arr[2] = new int[2];

注:

int[][]arr = new int[][3];  //非法

实例

1、求出数组中的最大值,最小值,平均值,和值,查找并输出出来

private static void test1() {
        /**
         * 定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,
         * 然后求出所有元素的最大值,最小值,平均值,和值,查找 并输出出来。
         */
        int s[] = new int[10];
        Random random = new Random();
        for (int i = 0; i < 10; i++) {
            s[i] = random.nextInt(100);
        }
        int sum = 0, max = s[0], min = s[0];
        for (int i = 0; i < 10; i++) {
            sum += s[i];
            if (max < s[i]) max = s[i];
            if (min > s[i]) min = s[i];
        }
        float avg = (float) sum / s.length;
        System.out.println(java.util.Arrays.toString(s));
        System.out.println("max:" + max);
        System.out.println("min:" + min);
        System.out.println("avg:" + avg);
    }

2、将二维数组按行列位置互换

private static void test2() {
        /**
         * 定义一个int型的二维矩阵数组,包含9个元素
         * 然后将这些元素按行列位置互换。
         */
        int s1[][] = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
        int s2[][] = new int[s1.length][s1[0].length];
        for (int i = 0; i < s1.length; i++) {
            for (int j = 0; j < s1[i].length; j++) {
                s2[i][j] = s1[j][i];
            }
        }
        System.out.println("变化前:");
        for (int j = 0; j < s1.length; j++) {
            System.out.println(java.util.Arrays.toString(s1[j]));
        }
        System.out.println("变化后:");
        for (int j = 0; j < s1.length; j++) {
            System.out.println(java.util.Arrays.toString(s2[j]));
        }
    }

3、利用数组随机抽取幸运观众

private static void test3() {
        /**
         * 利用数组随机抽取幸运观众
         * 随机生成观众
         */
        String s[] = new String[50];
        Random random = new Random();
        for (int i = 0; i < 50; i++) {
            s[i] = "观众" + i;
        }
        System.out.println("幸运观众是:");
        System.out.println(s[random.nextInt(50)]);

    }

4、利用数组反转字符串

private static void test4() {
        /**
         * 利用数组反转字符串
         */
        String s = "hello world!";
        StringBuilder sb = new StringBuilder();
        for (int i = s.length() - 1; i >= 0; i--) {
            sb.append(s.charAt(i));
        }
        System.out.println(sb);
    }

5、选择排序

private static void test5() {
        /**
         * 选择排序
         * 随机生成5个数
         * 用选择排序将数组排序
         */
        int s[] = new int[5];
        Random random = new Random();
        for (int i = 0; i < 5; i++) {
            s[i] = random.nextInt(100);
        }
        System.out.println(java.util.Arrays.toString(s));
        for (int i = s.length - 1; i >= 0; i--) {
            int max = 0,max_index=0;
            for (int j = 0; j < i + 1; j++) {
                if(max < s[j]){
                    max = s[j];
                    max_index = j;
                }
            }
            int temp = s[i];
            s[i] = s[max_index];
            s[max_index] = temp;
        }
        System.out.println(java.util.Arrays.toString(s));
    }

6、冒泡排序

private static void test6() {
        /**
         * 冒泡排序
         * 随机生成5个数
         * 用冒泡排序将数组排序
         */
        int s[] = new int[5];
        Random random = new Random();
        for (int i = 0; i < 5; i++) {
            s[i] = random.nextInt(100);
        }
        System.out.println(java.util.Arrays.toString(s));
        for (int i = 0; i < s.length; i++) {
            for (int j = 0; j + i < s.length - 1; j++) {
                if(s[j]>s[j + 1]){
                    int temp = s[j];
                    s[j] = s[j+1];
                    s[j+1] = temp;
                }
            }

        }
        System.out.println(java.util.Arrays.toString(s));
    }

7、直接插入排序

private static void test7() {
        /**
         * 直接插入排序
         * 随机生成5个数
         * 用直接插入排序将数组排序
         */
        int s[] = new int[5];
        Random random = new Random();
        for (int i = 0; i < 5; i++) {
            s[i] = random.nextInt(100);
        }
        System.out.println(java.util.Arrays.toString(s));
        for (int i = 1; i < s.length; i++) {
            int temp = s[i],j;
            for (j = i - 1; j >= 0 && s[j] > temp; j--) {
                s[j + 1] = s[j];
            }
            s[j + 1] = temp;
        }
        System.out.println(java.util.Arrays.toString(s));
    }

这是我自己挑选的例子,感觉比较有代表性,别问测试了没有哈,都是我自己撸的~。看懂了这些例子,可以说算是入门数组了吧。

猜你喜欢

转载自blog.csdn.net/weixin_42363997/article/details/86174098