Java数组及练习(看这一篇就够了)

package Array;

public class array01 {

    /*

        一、数组的概述

        1.数组的理解:数组(Array),是多个相同类型数据按一定顺序排序的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。

        2.数组相关概念:

        》数组名

        》元素

        》角标、下标、索引

        》数组的长度:元素的个数

        3.数组的特点:

        1)数组是有序排列的

        2)数组属于引用数据类型的变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型

        3)创建数组对象会在内存中开辟一整块连续的空间

        4)数组的长度一旦确定,就不能更改。

        4.数组的分类

        1.按照维数:一维数组、二维数组、。。。

        2.按照数组元素的类型:基本数据类型元素的按钮、引用类型元素的数组

        5.一维数组的使用

        1. 一维数组的声明和初始化

        2. 如何调用数组的指定位置的元素

        3. 如何获取数组的长度

        4. 如何遍历数组

        5. 数组元素的默认初始化值

        6. 数组的内存解析

        */

    public static void main(String[] args) {

        //①一维数组的声明和初始化

        int num;//.声明

        num = 10;//初始化

        int id = 1001;//声明 + 初始化

        int[] ids;//声明

        //1.1 静态初始化:数组的初始化和数字元素的赋值操作同时进行

        ids = new int[]{1001,1002,1003,1004};

        //1.2 动态初始化:数组的初始化和数组元素的赋值操作同时进行

        String[] names = new String[5];

        //总结:数组一旦初始化完成,其长度就确定了

        //2. 如何调用数组的指定位置的元素:通过角标的方式调用

        //数组的角标(或索引)从0开始的,到数组的长度-1结束

        names[0] = "小明";

        names[1] = "小红";

        names[2] = "小绿";

        names[3] = "小蓝";

        names[4] = "小黄";

       // names[5] = "小灰";

        //3. 如何确定数组的长度。属性:length

        System.out.print(names.length);

        //4.如何遍历数组元素

        /*System.out.println(names[0]);

        System.out.println(names[1]);

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

        System.out.println(names[3]);

        System.out.println(names[4]);*/

        for (int i=0;i<names.length;i++){

            System.out.println(names[i]);

        }

        //5.数组元素的默认初始化值

        //》 数组元素是整型:0

        //》 数组元素是浮点型:0.0

        //》 数组元素是char型:0或'\u0000',而非'0'

        //》 数组元素是引用数据类型:null

        int[] arr = new int[4];

        for (int i=0;i<arr.length; i++){

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

        }

        System.out.println("************");

        short[] arr1 = new short[4];

        for (int i=0; i<arr1.length; i++){

            System.out.println(arr1[i]);

        }

        System.out.println("***********");

        float[] arr2 = new float[4];

        for (int i=0; i<arr2.length;i++){

            System.out.println(arr2[i]);

        }

        System.out.println("*************");

        char[] arr3 = new char[4];

        for (int i = 0;i<arr3.length; i++){

            System.out.println("----"+ arr3[i] + "******");

        }

        if (arr3[0]==0){

            System.out.println("你好!");

        }

        System.out.println("*************");

        boolean[] arr4 = new boolean[5];

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

        System.out.println("*****************");

        String[] arr5 = new String[5];

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

        if (arr5[0] == null){

            System.out.println("北京天气不错! ");

        }

    }

}

package Array;

import javax.swing.*;

import java.util.Scanner;

public class array02 {

    //⑥数组内存解析

    //练习

    //升景坊单间短期出租4个月,1550元/月(水电煤公摊,网费35元/月),空调、卫生间。厨房齐全。

    //屋内均是IT行业人士,喜欢安静。所以要求来租房最好是同行或者刚毕业的年轻人,爱干净、安静。

    public static void main(String[] args) {

        int[] arr = new int[]{8,2,1,0,3};

        int[] index = new int[]{2,0,3,2,4,0,1,3,2,3,3};

        String tel = "";

        for (int i = 0;i<index.length; i++){

            tel += arr[index[i]];

        }

        System.out.println("联系方式:" + tel);

        /*2. 从键盘读入学生成绩,找出最高分,并输出学生成绩等级

        成绩>=最高分-10 等级为‘A’

        成绩>=最高分-20 等级为‘B’

        成绩>=最高分-30 等级为‘C‘

        其余           等级为’D‘

        提示:先读入学生人数,根据人数创建int数组,存放学生成绩

         */

        //1. 使用Scanner,读取学生个数

        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入学生人数:");

        int number = scanner.nextInt();

        //2. 创建数组,存储学生成绩:动态初始化

        int[] scores = new int[number];

        //3. 给数组中的元素赋值

        System.out.println("请输入"+number+"学生成绩:");

        for (int i=0; i<scores.length; i++){

            scores[i] = scanner.nextInt();

        }

        //4. 获取数组中的元素的最大值:最高分

        int maxScore = 0;

        for (int i=0; i<scores.length; i++){

            if (maxScore < scores[i]){

                maxScore = scores[i];

            }

        }

        //5. 根据每个学生成绩与最高分的差值,得到每个学生的等级,并输出等级和成绩

        char level;

        for (int i=0; i<scores.length; i++){

            if (maxScore - scores[i] <= 10){

                level = 'A';

            }else if (maxScore - scores[i] <= 20){

                level = 'B';

            }else if (maxScore - scores[i] <= 30){

                level = 'C';

            }else {

                level = 'D';

            }

            System.out.println("student" + i + "score is" + scores[i] + ",grade is" + level);

        }

    }

}

package Array;

import javax.swing.text.Style;

public class array03 {

    /*

    二维数组的使用

    1. 理解

    对于二维数组的理解,我们可以看成是一维数组array1有作为另一个一维数组array2的元素的存在。

    其实,从数组底层的运行机制来看,其实没有多维数组

    2. 二维数组的使用

    ① 二维数组的声明和初始化

    ② 如何调用数组的指定位置的元素

    ③ 如何获取数组的长度

    ④ 如何遍历数组

    ⑤ 数组元素的默认初始化值

    ⑥ 数组的内存解析

    */

    public static void main(String[] args) {

        //1. 二维数组的声明和初始化

        int[] arr = new int[]{1,2,3};//一维数组

        //静态初始化

        int[][] arr1 = new int[][]{{1,2,3},{4,5},{6,7}};

        //动态初始化1

        String[][] arr2 = new String[3][2];

        //动态初始化2

        String[][] arr3 = new String[3][];

        //也是正确的写法

        int[] arr4[] = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};

        int[] arr5[] = {{1,2,3},{4,5,9,10},{6,7,8}};

        //② 如何调用数组的指定位置的元素

        System.out.println(arr1[0][1]);//2

        System.out.println(arr2[1][1]);//null

        arr3[1] = new String[4];

        System.out.println(arr3[1][0]);

        //③ 如何获取数组的长度

        System.out.println(arr4.length);//3

        System.out.println(arr4[0].length);//3

        System.out.println(arr4[1].length);//4

        //④ 如何遍历数组

        for (int i=0; i<arr4.length; i++){

            for (int j=0; j<arr4[i].length; j++){

                System.out.print(arr4[i][j] + " ");

            }

            System.out.println();

        }

        //⑤ 数组元素的默认初始化值

        /*

        针对与初始化方式一:比如:  int[][] arr6 = new int[4][3];

             外层元素的初始化值为:地址值

             内层元素的初始化值为:与一维数组初始化情况相同

        针对于初始化方式二:比如:int[][] arr6 = new int[4][];

             外层元素的初始化值为:null

             内层元素的初始化值为:不能调用,否则报错

        */

        int[][] arr6 = new int[4][3];

        System.out.println(arr6[0]);//[I@7699a589

        System.out.println(arr6[0][0]);//0

        System.out.println("***********************");

        float[][] arr7 = new float[4][3];

        System.out.println(arr7[0]);//地址值

        System.out.println(arr7[0][0]);//0.0

        System.out.println("***********************");

        String[][] arr8 = new String[4][2];

        System.out.println(arr8[1]);//地址值

        System.out.println(arr8[1][1]);//null

        System.out.println("***********************");

        double[][] arr9 = new double[4][];

        System.out.println(arr9[1]);//null

        //System.out.println(arr9[1][0]);//报错

        int[][] arr10 = new int[3][];

        arr10[0]= new int[3];

        //求二维数组的总和

        int[][] arr22 = new int[][]{{3,5,8},{12,9},{7,0,6,4}};

        int nnm=0;

        for (int i=0; i<arr22.length;i++){

            for (int j=0; j<arr22[i].length;j++){

                nnm += arr22[i][j];

            }

        }

        System.out.println("总和为:"+nnm);

        /*

        使用二维数组打印一个10行杨辉三角。

        【提示】

        1. 第一行有一个元素,第n行有n个元素

        2. 每一行的第一个元素和最后一个元素都是1

        3. 从第三行开始,对于非第一个元素和最后一个元素的元素。即:

        yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];

        */

        //1. 声明并初始化二维数组

        int[][] yanghui = new int[10][];

        //2. 给数组的元素赋值

        for (int i = 0;i<yanghui.length; i++){

            yanghui[i] = new int[i + 1];

            //2.1 给首末元素赋值

//            yanghui[i][0] = 1;

//            yanghui[i][i] = 1;

            yanghui[i][0] = yanghui[i][i] = 1;//他们都是1,就可以使用连续赋值

            //给每行的非首末元素赋值

           // if (i > 1){

                for (int j =1; j<yanghui[i].length - 1; j++){

                    yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];

           //     }

            }

        }

        //3. 遍历二维数组

        for (int i=0; i<yanghui.length; i++){

            for (int j=0; j<yanghui[i].length; j++){

                System.out.print(yanghui[i][j] +" ");

            }

            System.out.println();

        }

    }

}

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值