zoukankan      html  css  js  c++  java
  • 数组

    数组长度是确定的,数组一旦确定,大小不可更改;

    其元素必须是相同类型,不允许出现混合类型;

    数组中元素可以是任何数据类型,包括基本类型和引用类型;

    数组变量属引用类型,数组可以看作是对象,数组中每个元素相当于该对象的成员变量;

    数组本身就是对象,java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。

    数组使用

    package com.wang.array;
    import javafx.scene.transform.Scale;
    import java.util.Scanner;
    public class Demo01 {
        public static void main(String[] args) {
            int[] nums;//声明数组
            nums=new int[10];//创建数组,数组中可存放十个int类型的数字
            Scanner scanner=new Scanner(System.in);
            System.out.println("给数组中元素赋值");
            for(int i=0;i<nums.length;i++){
                nums[i]=scanner.nextInt();
            }
            //计算所有元素的和
            int sum=0;
            for(int i=0;i<nums.length;i++){
                sum=sum+nums[i];
            }
            System.out.println(sum);
        }
    }
    一元数组
    public static void main(String[] args) {
            int[] array={1,2,3,4,5};
            //打印数组元素
            for(int i=0;i<array.length;i++){
                System.out.println(array[i]);
            }
            //计算所有元素的和
            int sum=0;
            for(int i=0;i<array.length;i++){
                sum=sum+array[i];
            }
            System.out.println(sum);
            //查找最大元素
            int max=array[0];
            for(int i=0;i<array.length;i++){
                if(array[i]>max){
                    max=array[i];
                }
            }
            System.out.println(max);
            //增强型for循环
            for (int i : array) {
                System.out.println(i);
            }
        }
    二元数组
            public static void main(String[] args) {
            int[][] a={{1,2},{2,3},{3,4},{4,5}};
            for (int i=0;i<a.length;i++){
                for(int j=0;j<a[i].length;j++){
                    System.out.println(a[i][j]);
                }
            }
       }

    Arrays类

    数组工具类java.util.Arrays

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

    Arrays类中的方法都是static修饰的静态方法,在使用的时候直接使用类名进行调用,而不用使用对象来调用。

    常用功能:给数组赋值:fill方法

                       给数组排序:sort方法

                       比较数组:equals方法比较数组中元素值是否相等

                       查找数组元素:通过binarySearch方法能对排好序的数组进行二分查找法操作

    冒泡排序法
    package com.wang.array;
    import java.util.Arrays;
    //冒泡排序法
    public class Demo06 {
        public static void main(String[] args) {
            int[] a={3,2,0,54,214,55,4,0};
            int[] sort=sort(a);//调用完自己写的排序方法后,返回一个排序后的数组
            System.out.println(Arrays.toString(sort));
        }
        public static int[] sort(int[] array){
            for(int i=0;i<array.length-1;i++){
                for (int j=0;j<array.length-1-i;j++){
                    if(array[j+1]<array[j]){
                        int temp=array[j];
                        array[j]=array[j+1];
                        array[j+1]=temp;
                    }
                }
            }
            return array;
        }
    }

    稀疏数组

    当一个数组中大部分元素为0,或者为同一值得数组时,可以使用稀疏数组来保存该数组。

    稀疏数组的处理方法: 记录数组一共有几行几列,有多少个不同值

                                         把具有不同值得元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模

    package com.wang.array;
    
    import java.util.Arrays;
    
    //稀疏数组
    public class Demo07 {
        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 i=0;i<array1.length;i++){
                for(int j=0;j<array1[i].length;j++){
                    System.out.print(array1[i][j]+"	");
                }
                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);
            //创建一个稀疏数组
            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]+"	"
                                   +array2[i][1]+"	"
                                   +array2[i][2]+"	");
            }
            System.out.println("还原稀疏数组:");
            //读取稀疏数组的值
            int[][] array3=new int[array2[0][0]][array2[0][1]];
            //给其中的元素还原值
            for (int i=1;i<array2.length;i++){
                array3[array2[i][0]][array2[i][1]]=array2[i][2];
            }
            //打印
            for(int i=0;i<array3.length;i++){
                for(int j=0;j<array3[i].length;j++){
                    System.out.print(array3[i][j]+"	");
                }
                System.out.println();
            }
        }
    }
  • 相关阅读:
    windows使用zip包安装mysql8.0.12
    windows使用msi包安装mysql8.0.12
    查看mysql的bin-log日志
    修改zabbix的端口号
    mysql备份脚本并保留7天
    上海坤亿
    nginx面试题
    服务器导入导出数据
    轮询和长轮询
    Python 三种读文件方法read(), readline(), readlines()及去掉换行符
  • 原文地址:https://www.cnblogs.com/wyj96/p/11745222.html
Copyright © 2011-2022 走看看