首页 > 编程语言 > 详细

Java数组

时间:2021-03-02 16:35:50      阅读:24      评论:0      收藏:0      [点我收藏+]

数组

  • 数组的四个基本特点

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

    • 数组是相同类型数据的有序集合
    • 数组描述的是相同类型的若干数据,按照一定的先后次序排列组合而成
    • 每一个数据为一个数组元素,每个元素有相应的下标确定,数组的下标初始为0。即下标为0代表第一个元素,下标为1代表第二个元素,以此类推...
  • 数组声明创建

    • 首先声明数组变量:

      dataType[] arrayRefVar;//首选方法
      dataType arrayRefVar[];//效果相同,但不是首选方法,这是Java初期为了让c与c++程序员适应(c/c++格式)
      
    • Java语言使用new操作符来创建数组:

      dataType[] arrayRefVar=new dataType[arraySize];
      
    • 数组的元素是通过索引访问的,数组索引从0开始

    • 获取数组的长度:

      arrays.length
      
  • 数组使用(*)

    package com.study.array;
    
    public class ArrayDemo03 {
        public static void main(String[] args) {
            int[] arrays={1,2,3,4,5};
    
            //打印全部数组元素
            for (int i = 0; i < arrays.length; i++) {
                System.out.println(arrays[i]);
            }
            System.out.println("==================");
            //计算所有元素的和
            int sum=0;
            for (int i = 0; i < arrays.length; i++) {
                sum=sum+arrays[i];
            }
            System.out.println(sum);
            System.out.println("==================");
            //查找最大元素
            int max=arrays[0];
            for (int i = 1; i < arrays.length; i++) {
                if(arrays[i]>max){
                    max=arrays[i];
                }
            }
            System.out.println("max:"+max);
        }
    }
    
  • 多维数组

    • 多维数组可以看成是数组的数组,比如二维数组的每一个元素都是一个一维数组

    • 二维数组

      int a[][]=new int[2][5];
      

      把a[...]看成A,二维数组即可拆分为一维数组

      package com.study.array;
      
      public class ArrayDemo05 {
          public static void main(String[] args) {
      
              int[][] array={{1,2},{2,3},{3,4},{4,5}};
      
              printArray(array[0]);
      
      
          }
          //打印数组元素
          public static void printArray(int[] arrays){
              for (int i = 0; i < arrays.length; i++) {
                  System.out.print(arrays[i]+" ");
              }
          }
      }
      
  • Arrays类(*)

    • 数组的工具类java.util.Arrays

    • 由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本操作。

    • 查看JDK帮助文档

    • Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而“不用”使用对象来调用(注意:是“不用”而不是“不能”)

    • 常用功能

      • 给数组赋值:通过fill方法。
      • 对数组排序:通过sort方法,按升序。
      • 比较数组:通过equals方法比较数组中元素值是否相等。
      • 查找数组元素:通过binarySearch方法能对排序好的数组进行二分法操作。
  • 稀疏数组

    • 当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组
    • 稀疏数组的处理方式:
      • 记录数组一共有几行几列,有多少个不同值
      • 把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模
    行(row) 列(col) 值(value)
    0 3 22
    0 6 15
    1 1 11
    1 5 17

    0 0 0 22 0 0 15

    0 11 0 0 0 17 0

    ......

    package com.study.array;
    
    public class ArrayDemo08 {
        public static void main(String[] args) {
            //1.创建二维数组
            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();
            }
            
            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[] ints:array2) {
                for (int anInt:ints) {
                    System.out.print(anInt+"\t");
                }
                System.out.println("");
            }
    
            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];
            }
            for (int i = 0; i < 11; i++) {
                for (int j = 0; j < 11; j++) {
                    System.out.print(array3[i][j]+"\t");
                }
                System.out.println(" ");
            }
    
        }
    }
    
    

Java数组

原文:https://www.cnblogs.com/Victor0118/p/14469399.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!