java中的数组详解

1 数组的概述

1.数组:多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,通过编号的形式对这些数据进行统一管理

2.数组的常见概念:

        数组名

        数组元素:数组中的数据

        下标或索引、角标:数组中数据的位置

        数组的长度:数组中元素的个数length从0开始

3.数组的特点:

  • 数组是有序排序的
  • 数组本身是引用数据类型,而数组中的元素可以是任意数据类型。
  • 创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址(不连续的是链表)
  • 数组的长度一旦确定,就不能修改
  • 我们可以直接通过下标或索引的方式调用指定位置的元素,速度很快

4.数组的分类

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

2 一维数组的使用

java中的元素必须先初始化,初始化就是为数组中的数组元素分配内存空间,并为每个数组元素赋初始值。

1.一维数组的声明和初始化:

java中的数组详解_第1张图片

注:

静态初始化和动态初始化不能同时使用

数组长度一旦确定就不能修改

2.调用数组的指定位置的元素:通过角标方式调用

数组的角标或索引从0开始,到数组的长度-1结束

names[0]="1";
names[1]="2";
names[2]="3";
names[3]="4";
names[4]="5";

 3.获取数组的长度

通过属性:length

System.out.println(name.length);

4.遍历数组

访问无效下标,会导致数组越界:ArrayIndexOutOfBoundsException

5.数组元素的默认初始化值

        数组元素是整型(short、byte、int):0

        数组元素是浮点型:0.0

        数组元素是char型:0或‘\u000’而不是‘0’ 控制台输出的是空格的效果。但不是真正的空格

        数组元素是boolean型:false(二进制中的0)

        数组元素是引用数据类型:(string):null

6.数组的内存解析

堆(heap)和栈(stack)和方法区

java中的数组详解_第2张图片

7.数组的插入和删除

java中的数组详解_第3张图片

插入:

public class ArrayInsert {
    public static void main(String[] args) {
        int[] arr=new int[10];
        arr[0]=8;
        arr[1]=12;
        arr[2]=6;
        arr[3]=20;
        arr[4]=25;
        //保存实际的有效元素个数
        System.out.println("插入元素前===========");
        for (int i : arr) {
            System.out.println(i);
        }
        int size=5;
        Scanner scan=new Scanner(System.in);
        System.out.println("请输入要插入的元素:");
        int n = scan.nextInt();
        System.out.println("请输入要插入元素的位置");
        int pos = scan.nextInt();
        if(pos>=0&&pos<=size){
            for (int i = size; i >pos; i--) {
                arr[i]=arr[i-1];
            }
            arr[pos]=n;
            System.out.println("插入元素后====");
            for (int i : arr) {
                System.out.println(i);
            }
        }else{
            System.out.println("插入元素有误");
        }
    }
}

删除:

public class ArrayDelete {
        public static void main(String[] args) {
            int[] arr=new int[10];
            arr[0]=8;
            arr[1]=12;
            arr[2]=6;
            arr[3]=20;
            arr[4]=25;
            //保存实际的有效元素个数
            System.out.println("删除元素前===========");
            for (int i : arr) {
                System.out.println(i);
            }
            int size=5;
            Scanner scan=new Scanner(System.in);
            System.out.println("请输入要删除的元素:");
            int n = scan.nextInt();//6
            System.out.println("请输入要删除元素的位置");
            int pos = scan.nextInt();//2
            if(pos>=0&&pos<=size){
                for (int i = pos; i 

反转:

java中的数组详解_第4张图片

 数组的查找

1.线性查找

java中的数组详解_第5张图片

 2.二分查找

java中的数组详解_第6张图片

8.数组的扩容:

java中的数组详解_第7张图片

9.数组类型的参数

java中的数组详解_第8张图片

 10.数组类型的返回值

java中的数组详解_第9张图片

11.可边长参数

java中的数组详解_第10张图片

3二维数组的使用

数组属于引用数据类型

数组的元素也可以是引用数据类型

一个一维数组又作为另一个一维数组的元素而存在。从数组底层的运行机制来看,其实没有多维数组

1.二维数组的声明和初始化:

java中的数组详解_第11张图片

 2.如果调用数组的指定位置的元素

java中的数组详解_第12张图片

3.如何获取数组的长度

4.如何遍历数组

java中的数组详解_第13张图片

 5.数组元素的默认初始化值

规定:二维数组分为外层数组的元素,内层数组的元素

数组元素是整型(short、byte、int):0

数组元素是浮点型:0.0

数组元素是char型:0或‘\u000’而不是‘0’ 控制台输出的是空格的效果。但不是真正的空格

数组元素是boolean型:false(二进制中的0)

数组元素是引用数据类型:(string):null

练习:杨辉三角

public class Yanghui {
        public static void main(String[] args) {
            int[][] yanghui=new int[10][];
            for (int i = 0; i < yanghui.length; i++) {
                yanghui[i]=new int[i+1];
                for (int j = 0; j < yanghui[i].length; j++) {
                    if(j==0||i==j){
                        yanghui[i][j]=1;
                    }else{
                        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]);
                }
                System.out.println();
            }
        }
}

你可能感兴趣的:(java学习,java,数据结构,开发语言)