zoukankan      html  css  js  c++  java
  • 数组

    数组声明创建

    首先必须要声明数组变量,才能在程序中使用数组,下面是数组变量的语法:

    dataType[] arrayRefVar;//首选方法
    或dataType arrayRefVar[];//效果相同,但不是首选方法

    Java语言使用new操作符来创建数组,语法如下:

    dataType[] arrayRefVar = new dataType[arraySize];

    数组的元素是通过索引访问的,数组从0开始.
    获取数组的长度:array.length

    三种初始化

    *静态初始化

    int[] a = {1,2,3};
    Man[] mans = {new Man{1,1},new Man{2,2}}

    *动态初始化

    int[] a =new int[2];
    a[0]=1;
    a[1]=2;

    *数组的默认初始化
    数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化

    数组的四个基本特点

    1.其长度是确定的.数组一旦被创建,他的大小就是不可改变的.
    2.其元素是必须是相同类型,不允许出现混合类型.
    3.数组中的元素可以是任何数据类型,包括基本类型和引用类型.
    4.数组变量属引用类型,数组也可以是看成是对象,数组中的每个元素相当于该对象的成员变量.
    数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组本身是在堆中的.

    数组边界

    下标的合法区间:[0.length-1],如果越界就会报错;

    public static void main(String[] args){
    int[] a = new int[2];
    System.out.println("a[2]");
    }
    ***ArrayIndexOutOfBoundsException:数组下标越界!

    小结:

    1.数组是相同类型数据(数据类型可以为任意类型)的有序集合
    2.数组也是对象.数组元素相当于对象的成员变量.
    3.数组长度是确定的,不可变的.如果越界就会报错:ArrayIndexOutOfBounds

    多维数组

    *多维数组可以看成是数组的数组,比如一个二维数组就是一个特殊的一维数组,其每个元素都是一个一维数组
    *二维数组

    int a [][] = new int[][];

    解析:以上二维数组a可以看成一个两行五列的数组.

    package com.kuang.Array;
    
    public class ArrayDemo05 {
        public static void main(String[] args) {
            //四行两列
            /*
            * 1,2   array[0]
            * 2,3   array[1]
            * 3,4   array[2]
            * 4,5   array[3]
              */
            int[][] array = {{1,2},{2,3},{3,4},{4,5}};
            for (int i = 0; i < array.length; i++) {
                for (int j = 0; j < array[i].length; j++) {
                    System.out.print(array[i][j]);
                }
            }
            System.out.println(array[0][0]);
            System.out.println(array[2][1]);
        }
        //打印数组元素
        public  static void printArray(int[] arrays){
            for (int i = 0; i < arrays.length; i++) {
                System.out.println(arrays[i]);
            }
        }
    }
    

    Array类

    1.数组工具java.util.Arrays
    2.由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本操作.
    3.Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而"不用"使用对象了来调用(注意:是"不用"而不是"不能").

    具有以下常用功能:
    1.给数组赋值:通过fill方法.
    2.对数组排序:通过sort方法,按升序
    3.比较数组:通过equals比较数组中元素值是否相等.
    4.查找数组元素:通过binarySeach方法能对排序好的数组进行二分查找法操作.

    稀疏数组

    稀疏数组:稀疏数组可以看做是普通数组的压缩,但是这里说的普通数组是值无效数据量远大于有效数据量的数组

    package com.kuang.Array;
    
    public class ArrayDemo08 {
        public static void main(String[] args) {
            //1.创建一个二维数组11*11   0:没有棋子, 1:黑棋 2:白棋
            int[][] array1 = new int[11][11];
            array1[1][2] = 1;
            array1[2][3] = 2;
            //输出原始数组
            System.out.println("输出原始的数组");
            for (int[] ints : array1) {
                for (int anInt : ints) {
                    System.out.print(anInt+"\t");
                }
                System.out.println();
            }
            //转换为稀疏数组
            //获取有效值的个数
            int sum = 0;
            for (int i = 0; i < 11; i++) {
                for (int j = 0; j < 11; j++) {
                    if (array1[i][j]!=0){
                        sum++;
                    }
                }
            }
            System.out.println("有效值的个数"+sum);
            //2.创建一个稀疏数组的数组
            int[][] array2 = new int[sum+1][3];
            array2[0][0] = 11;
            array2[0][1] = 11;
            array2[0][2] = sum;
            //遍历二维数组,将非零的值,存放稀疏数组中
            int count = 0;
            for (int i = 0; i < array1.length; i++) {
                for (int j = 0; j < array1[i].length; j++) {
                    if (array1[i][j]!=0){
                        count++;
                        array2[count][0]=i;
                        array2[count][1]=j;
                        array2[count][2]=array1[i][j];
                    }
                }
            }
            //输出稀疏数组
            System.out.println("稀疏数组");
            for (int i = 0; i < array2.length; i++) {
                System.out.println(array2[i][0]+"\t"
                                +array2[i][1]+"\t"
                                + array2[i][2]+"\t");
            }
            System.out.println("===================");
            System.out.println("还原");
            //1.读取稀疏数组
            int[][] array3 = new int[array2[0][0]][array2[0][1]];
            //2.给其中的元素还原它的值
            for (int i = 1; i < array2.length; i++) {
                array3[array2[i][0]][array2[i][1]] = array2[i][2];
            }
            //3.打印
            System.out.println("输出还原的数组");
            for (int[] ints : array3){
                for (int anInt : ints) {
                    System.out.print(anInt+"\t");
                }
                System.out.println();
            }
        }
    }
    
  • 相关阅读:
    ES6走一波 Generator异步应用
    扁平数据结构化
    Django笔记&教程 6-2 表单(Form)基础操作
    Django笔记&教程 6-3 使用模型(models)创建表单(form)
    Django笔记&教程 6-4 forms进阶操作,重写forms方法
    Django笔记&教程 7-1 基于类的视图(Class-based views)介绍
    Django笔记&教程 7-3 拓展CBVs(Class-based views)
    Django笔记&教程 5-1 基础增删查改
    Django笔记&教程 1-1 一 新建项目
    Django笔记&教程 0-2 框架版本与相关工具
  • 原文地址:https://www.cnblogs.com/linjiangplus/p/15563960.html
Copyright © 2011-2022 走看看