zoukankan      html  css  js  c++  java
  • Java基础语法(下)-数组Array

    Java基础语法(下)-数组Array、

    • 数组概略
    package com.bird_01;
    /*
     * 数组:存储同一钟数据类型的多个元素的容器。
     * 
     * 定义格式:
     *         A:数据类型[] 数组名;(推荐)
     *         B:数据类型 数组名[];
     * 
     *         举例:
     *             int[] arr;定义了一个int类型数组,数组名是arr
     *             int arr[];定义了一个int类型的变量,变量名是arr数组
     * 
     * 数组初始化:
     *         A:所谓的初始化,就是为数组开辟内存空间,并为数组中的每个元素赋予初始值
     *         B:我们有两种方式可以实现数组的初始化
     *             a:动态初始化    只给出长度,由系统给出初始化值
     *             b:静态初始化    给出初始化值,由系统决定长度
     * 
     *
     * 动态初始化:
     *         数据类型[] 数组名 = new 数据类型[数组长度];
     * 
     */
    public class ArrayDemo {
        public static void main(String[] args) {
            //数据类型[] 数组名 = new 数据类型[数组长度];
            int[] arr = new int[3];
            /*
             * 左边:
             *         int:说明数组中的元素类型是int类型
             *         []:说明这是一个数组
             *         arr:这是数组的名称
             * 
             * 右边:
             *         new:为数组申请内存分配,开辟空间
             *         int:说明数组中的元素类型是int类型
             *         []:说明这是一个数组
             *         3:数组的长度,其实就是数组中的元素个数
             */
            
            //输出数组名
            System.out.println("arr:"+arr);//[I@1a116c9
            //我们获取数组的地址值是没有意义的,我要的是数组中的元素值,该怎么办呢?
            //不用担心,java已经帮你想好了这个问题
            //其实数组中的每个元素都是有编号的,编号从0开始,最大的编号是数组的长度-1
            //通过数组名和编号的配合使用我们就可以获取指定编号的元素值
            //这个编号专业叫法:索引
            //访问格式:数组名[索引]
            System.out.println(arr[0]);
            System.out.println(arr[1]);
            System.out.println(arr[2]);
            
        }
    }
    • Java中的内存分配
    •  一个数组的内存图

    •  两个数组内存图

    •  两个数组指向同一个地址的内存图

    •  静态初始化内存图

    package com.brid_03;
    
    /*
     * 两个常见小问题:
     *         ArrayIndexOutOfBoundsException:数组索引越界异常
     *             产生的原因:我们访问了不存在的索引
     * 
     *         NullPointerException:空指针异常
     *             产生的原因:数组已经不在指向堆内存的数据了,你还用数组名去访问数据
     */
    public class ArrarDemo {
        public static void main(String[] args) {
            int[] arr = { 1, 2, 3 };
            // System.out.println(arr[3]);
    
            arr = null;
            System.out.println(arr[1]);
        }
    }
    • 数组常见两个小问题图解

    package com.bird_04;
    /*
     * 数组遍历(依次输出数组中的每一个元素)
     */
    public class ArrayTest {
        public static void main(String[] args) {
            //定义一个数组
            int[] arr = {11,22,33,44,55};
            
            //原始做法
            System.out.println(arr[0]);
            System.out.println(arr[1]);
            System.out.println(arr[2]);
            System.out.println(arr[3]);
            System.out.println(arr[4]);
            System.out.println("--------");
            
            //通过for循环实现获取数据0-4
            for(int x=0; x<5; x++) {
                System.out.println(arr[x]);
            }
            System.out.println("--------");
            
            //为了解决我们去数组中数元素的个数,数组就提供了一个属性:length
            //用于获取数组元素个数
            //格式:数组名.length
            System.out.println("数组共有"+arr.length+"个");
            System.out.println("--------");
            
            for(int x=0; x<arr.length; x++) {
                System.out.println(arr[x]);
            }
        }
    }
    • 数组操作之获取最值图解

    package com.bird_04;
    
    /*
     * 比较数字最值(最大值或最小值)
     */
    public class ArrarTest2 {
        public static void main(String[] args) {
            // 定义数组
            int[] arr = { 22, 88, 11, 89, 45 };
    
            // 定义参照物
            int mini = arr[0];
    
            // 循环比较
            for (int i = 1; i < arr.length; i++) {
                if (arr[i] < mini) {
                    mini = arr[i];
                }
            }
            System.out.println("数组最小值:"+mini);
        }
    }
    • 二维数组的概述和基本使用
    package com.bird_05;
    /*
     * 二维数组:其实就是元素为一维数组的数组。
     * 
     * 定义格式:
     *         A:数据类型[][] 数组名; (推荐的方式)
     *         B:数据类型 数组名[][];
     *         C:数据类型[] 数组名[];
     * 初始化:
     *         A:动态初始化
     *             数据类型[][] 数组名 = new 数据类型[m][n];
     *             m表示的是二维数组中一维数组的个数
     *             n表示的是一维数组中的元素个数
     *         B:静态初始化
     *             数据类型[][] 数组名 = new 数据类型[][]{{元素...},{元素...},{元素...},...};
     *             简化格式:
     *             数据类型[][] 数组名 = {{元素...},{元素...},{元素...},...};
     * 
     * 二维数组名配合索引可以获取到每一个一维数组。
     * 每一个一维数组配合索引名可以获取到数组中的元素。
     * 
     * 假如我有一个二维数组:arr。
     * 我要从中获取一维数组:arr[索引]
     * 我要从中获取二维数组的元素:arr[索引][索引]
     */
    public class ArrayArrayDemo {
        public static void main(String[] args) {
            //数据类型[][] 数组名 = {{元素...},{元素...},{元素...},...};
            int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
            
            System.out.println(arr); //[[I@1774b9b
            System.out.println(arr[0]); //[I@104c575
            System.out.println(arr[1]);
            System.out.println(arr[2]);
            
            //如何获取二维数组中的元素呢?
            System.out.println(arr[0][0]);
            System.out.println(arr[1][1]);
            System.out.println(arr[2][2]);
        }
    }
    •  二维数组遍历
    package com.bird_05;
    /*
     * System.out.print() 输出
     * System.out.println() 输出并且换行
     */
    public class ArrayArrayTest {
        public static void main(String[] args) {
            // 声明二维数组
            int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
            //循环遍历
            for(int y=0; y <arr.length;y++)
            {
                for (int x = 0; x < arr[y].length; x++) {
                    System.out.print(arr[y][x]+"  ");
                }
                System.out.println();//换行
            }
        }
    }
  • 相关阅读:
    HDU 1102 Constructing Roads
    HDU 1285 确定比赛名次。
    最小生成树 HDU 各种畅通工程的题,prim和kru的模板题
    HDU Jungle Roads 1301 最小生成树、
    并查集小结(转)
    HDU hdu 2094 产生冠军 拓扑排序 判定环
    模运算(转)
    拓扑排序(主要是确定环和加法) HDU 2647 Reward
    HDU 1372 Knight Moves 简单BFS
    用计算机模型浅析人与人之间沟通方式 (一)如何谈话
  • 原文地址:https://www.cnblogs.com/birdGe/p/13266005.html
Copyright © 2011-2022 走看看