java - 数组

java 数组

数组说明

数组是相同类型的变量按顺序组成的一种复合数据类型,称这些相同类型的变量为数组的元素或单元。通过数组名加索引来使用数组的元素。

数组属于引用类型变量,本质是对象参考 文档

数组的声明

声明数组:数组的类型+数组变量的名称(简称数组名)

声明一维数组
  • 数组的元素类型 数组名[];

    float numbers[];
    
  • 数组的元素类型[] 数组名 推荐

    float[] numbers;
    
声明多维数组
  • 数组的元素类型 数组名[];

    float numbers[][];
    
  • 数组的元素类型[] 数组名 推荐

    float[][] numbers;
    
  • 数组的元素类型[] 数组名[];

    float[] numbers[];
    
分配变量

声明数组后,必须采用new关键字进行内存空间分配

数组名 = new 数组元素的类型[数组元素的个数]

//一维数组声明和分配
int[] numbers;
numbers = new int[10];

//二维数组声明和分配
int[][] numbers;
numbers = new int[3][10];

动态初始化 type[] arrayName = new type[number];

//动态初始化一维数组声明和分配
int[] numbers = new int[4];

//动态初始化二纬数组声明和分配
int[][] numbers = new int[2][3];

静态初始化 type[] arrayName = {value, value...}

//静态初始化一维数组声明和分配
String[] names = {"smile","dylan"};

//静态初始化二维数组声明和分配
String[][] names = {{"smile"},{"smile"}};

栈空间数组变量存储的地址指向堆空间数组中第一个元素的地址

一维数组内存分析图:

image-20220330150307924

二维数组内存分析图

image-20220330191253935

数组的初始化

创建数组后,系统会给数组中每一个元素一个默认值

int->0,short->0,byte->0,long->0,float->0.0,double->0.0,char->\u000,boolean->false,String->null
使用数组

数组通过索引访问自己的元素。数组的第一个元素是从下标0开始

//一维数组使用
int[] numbers = {1,2,3};

int myNumber = numers[0];

//二维数组使用
int[][] numbers = {{1,2,3},{4,5,6}};

int myNumber = numbers[0][0];

数组中的元素的个数称为数组的长度。通过属性值length获取到数组的长度

//一维数组使用
int[] numbers = {1,2,3};
System.out.println(numbers.length);

//一维数组使用
int[][] numbers = {{1,2,3},{1,2,3}};
System.out.println(numbers.length);

分别输出结果为:3 2

数组的引用

数组属于引用类型变量,因此两个相同类型的数组如果具有相同引用,它们就有完全相同的元素

int[] numbers1 = {1,2,3};
int[] numbers2 = numbers1;

numbers2[0] = 0;

System.out.println(numbers1[0]);

采用静态声明的方式,声明一个int[]变量numbers1,将number1的值,赋值给numbers2,修改numbers2的值,我们发现numbers1的值也发生了变化。

将数组赋值给另外一个变量的时候,必须保证两个变量的数据类型保持一致

image-20220330192532018

数组的遍历
  • 普通for循环

    for(int i =0; i < array.lenth;i++) {
      //采用下标进行数组的访问
      System.out.println(array[i]);
    }
    
  • 特殊for循环

    for(int value : array) {
      System.out.println(value);
    }
    //value 的类型,必须和数组中声明的类型保持一致
    

当数组的下标超出数组的最大下标(array.length-1),会抛出常

java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 3
多维数组(二维数组)

二维数组实际上是由多个一维数组组成,它的各个一维数组的长度可以相同,也可以不同

int[][] numbers = new int[2][];

for(int i = 0; i< numbers.length; i++) {
  numbers[i] = new int[i+1];
}

//输出的结果为 1 2
for(int[] array : numbers) {
  System.out.println(array.length);
}

杨辉三角使用

public int[][] Yanghui(int number) {
  int[][] numbers = new int[number][];

  for (int i = 0; i < numbers.length; i++) {
    numbers[i] = new int[i+1];

    for (int j = 0; j < i+1; j++) {
      if (j == 0 || j == i) {
        numbers[i][j] = 1;
      } else {
        numbers[i][j] = numbers[i-1][j-1] + numbers[i-1][j];
      }
    }
  }

  return numbers;
}
数组常用的方法
  • 复制数组(Arrays.copyOf)

    int[] numbers1 = {1,2,3};
    
    int[] numbers2 = Arrays.copyOf(numbers1,numbers1.length);
    
知识总结

GR5wYWFTWf

posted @   易文杰  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示