2020-12-30

JAVA数组(Array)

数组的概述

是多个相同数据类型,按一定顺序排列的集合,并使用一个名字命名,通过编号的方式进行统一管理。

数组的常见概念

  • 数组名
  • 元素
  • 下标(索引)
  • 数组长度

数组的特点

  • 数组是有序排列的
  • 数组是引用数据类型的变量,数组元素可以是基本数据类型,也可以是引用数据类型
  • 创建数组会在内存中开辟一整块连续的内存空间
  • 数组的长度一旦确定,就不能修改

数组的分类

  • 按维数分类:一维数组、二维数组
  • 按元素的类型:基本数据类型、引用数据类型

一维数组的使用

  • 声明和初始化
  • 调用数组指定的元素
  • 获取数组的长度
  • 遍历数组
  • 数组元素的默认初始化
  • 数组的内存解析
public class ArrayTest{
     
	//静态初始化
    int[] ids;//声明
    ids = new int[]{
     1,2,3,4,5}//初始化
    //动态初始化
    String[] names = new String[5];
    //数组索引
    names[0] = "jinwennan";
    names[1] = "xuxinyao";
    names[2] = "songqigang";
    //获取数组长度
    System.out.pringln(names.length);
    //遍历数组
    for(int i = 0;i < names.length;i++){
     
        System.out.println(names[i]);
    }
    //数组元素默认初始化值
    int[] arr = new int[5]
    for(i = 0;i < arr.length;i++){
     
        System.out.println(arr[i]);//输出结果0 0 0 0;
    }
    //整数型默认;0
    //浮点数默认值:0.0
    //布尔型默认值:false
    //char型默认值:0 ,而非'0';
    //引用数据类型:null;
    
}

//数组内存解析流程图

2020-12-30_第1张图片

//二维数组内存解析

2020-12-30_第2张图片

数组排序和算法

杨辉三角

2020-12-30_第3张图片

//杨辉三角
    @Test
    public void test02() {
     

        //声明二维数组
        int[][] yangHui = new int[10][];

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

            yangHui[i] = new int[i + 1];
        }
        //赋值
        for (int i = 0; i < yangHui.length; i++) {
     

            yangHui[i][0] = 1;
            yangHui[i][i] = 1;
        }

        for (int i = 2; i < yangHui.length; i++) {
     

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

                yangHui[i][j] = yangHui[i - 1][j - 1] + yangHui[i - 1][j];
            }
        }

        //遍历输出
        for (int i = 0; i < yangHui.length; i++) {
     

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

                System.out.print(yangHui[i][j] + "\t");
            }
            System.out.println();
        }
    }

数组的最大值、求和

 @Test
    public void test03() {
     

        int[] arr = new int[10];//声明数组

        //赋值
        //[a,b]区间的随机数:Math.random() * (b - a + 1) + a
        for (int i = 0; i < arr.length; i++) {
     

            arr[i] = (int) (Math.random() * (99 - 10 + 1) + 10);

            System.out.print(arr[i] + "\t");
        }
        System.out.println();

        //求最大值
        int maxValue = 0;
        for (int i = 0; i < arr.length; i++) {
     

            if (maxValue < arr[i]) {
     

                maxValue = arr[i];
            }
        }
        System.out.println("求最大值:" + maxValue);

        //求和
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
     

            sum += arr[i];
        }
        System.out.println("求和:" + sum);
    }

数组的复制

//数组的复制
    @Test
    public void test04() {
     

        int[] arr = new int[10];

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

            arr[i] = (int) (Math.random() * (99 - 10 + 1) + 10);

            System.out.print(arr[i] + "\t");
        }
        System.out.println();

        int[] arr1 = new int[arr.length];

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

            arr1[i] = arr[i];

            System.out.print(arr1[i] + "\t");
        }
    }

数组的反转

//数组的反转
    @Test
    public void test05() {
     

        int[] arr = new int[10];

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

            arr[i] = (int) (Math.random() * (99 - 10 + 1) + 10);

            System.out.print(arr[i] + "\t");
        }
        System.out.println();

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

            int temp = arr[i];
            arr[i] = arr[arr.length - i - 1];
            arr[arr.length - i - 1] = temp;
        }

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

            System.out.print(arr[i] + "\t");
        }
    }

冒泡排序

//冒泡排序
    @Test
    public void test06() {
     

        int[] arr = new int[10];

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

            arr[i] = (int) (Math.random() * (99 - 1 + 1) + 1);

            System.out.print(arr[i] + "\t");
        }
        System.out.println();

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

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

                if (arr[j] > arr[j + 1]) {
     

                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }

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

            System.out.print(arr[i] + "\t");
        }

你可能感兴趣的:(javase,java,数组)