java基础——数组

前言

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

常见概念:数组名,下标(索引), 元素 , 数组长度

概述

  1. 数组本身是引用数据类型,而数组中的元素可以是任意数据类型,包括基本数据类型和引用数据类型。

  2. 创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址

  3. 数组的长度一旦确定,便不能修改

  4. 可以通过下标(索引)来查找指定位置的元素

数组的分类

按照维度:一维数组,二维数组,三维数组。。。。

按照元素的类型:基本数据类型数组,引用数据类型元素的数组(即对象数组)

一维数组

正确的初始化:

int[] array; // 声明
array=new int[]{1,2,3,4,5}; // 静态初始化,即初始化和赋值同时进行
​
String[] str=new String[5]; // 动态初始化,即初始化和赋值过程分开进行

错误的写法:

int[] a=new int[5]{1,2,3,4,5};
int[] b=new int[];
int[5] c=new int[5];

数组的动态赋值

String str = new STring[5]; // 初始化一个数组
 // 给数组赋值,数组下标是从0开始
str[0]="张三";
str[1]="里斯"
。。。。。// 长度不能超过数组定义的长度,eg:本例中数组长度为5,所以最大数组下标为4.

获取数组长度

【数组名】.length

数组的默认初始化值

  1. 整型:0

  2. 浮点型:0.0

  3. char型:0 (注意此处零是这样的 ‘0’ 它不等于0,是个字符型)

  4. Boolean型:false

  5. 引用数据类型: null

二维数组

对于二维数组,可以看作是一维数组array1又增加了一个一维数组array2的元素而存在,从数组底层的运行机制来看,并没有多维数组

初始化

正确写法:

int[][] array=new int[][]{{1,2,3},{1,2},{1}}; // 静态初始化
int[][] a=new int[3][3];
int[][] b=new int[3][];
int[] c[]=new int[][]{{1,2,3},{1,2},{1}};

错误写法

int[][] a=new int[][3];
int[][] b=new int[][];
int[][] c=new int[3][3]{{1,2,3},{1,2,3},{1,2,3}};

长度

【数组名】.length 获取的行有多少行。要想获取每一行有多少个元素则可以用 【数组名】[行下标].length

默认值

int[][] a=new int[3][3];
System.out.printf(a[0])  // 此项输出的是地址值  栈(地址值)与堆(对象)
System.out.printf(a[0][0]) // 输出0

特殊的:

int[][] a=new [3][];
System.out.printf(a[1]) // 输出为null
System.out.printf(a[1][0]) // 报错,空指针异常

解释上述第一个输出为什么是null?

因为没有定义内层元素的长度,存放在堆中的只有3个空的一维数组,而数组属于引用数据类型,所以为null

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值