「这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战」。
数组
概述
数组:是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。
数组本身是引府数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。
常见概念
数组名
定义和标识符同
创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址。
下标(索引)
从0开始
我们可以直接通过下标(或索引)的方式调用指定位置的元素,速度很快
元素
数组长度
元素的个数
特点
数组是有序排列的
数组的长度一旦确定,就不能修改。
分类
按照维度:一维数组、二维数组、三维数组、...
按照元素的数据类型分:基本数据类型元素的数组、引用数据类型元素的数组(即对象数组)
一维数组
一维数组的定义和初始化
public class OneArray {
public static void main(String[] args){
int[] array;//声明数组,int指数组元素的类型
//静态初始化:数组的初始化和数组元素的赋值同时进行
array=new int[]{1001,1002,1003,1004};//注意数组本身是引用数据类型,需要加new
String[] names1=new String[]{" "," "};//String不管输入什么都必须要有双引号
//动态初始化:数组的初始化和数组元素的赋值分开进行
String[] names=new String[5];//数组的初始化
int[] array1=new int[5];
//数组一旦初始化完成,其长度就确定了,且不可修改
}
}
调用数组中指定位置的元素
//接上面 //调用数组指定位置的元素(通过下表方式调用)
//数组的下标(角标、索引)是从0开始,到长度-1结束
names[0]="li";//索引一般都是从0开始,除了数据库中的表从1开始(和数据库交互时不是0开始)
names[1]="yu";
names[2]="ze";
names[3]="ha";
names[4]="ha";//到4结束,定义长度为5
获取数组长度
//接上面
//获取数组的长度
//属性:lengh
System.out.println(names.length);//数组的长度是一个int型的值
int lengths=names.length;
System.out.println(lengths);
遍历数组
//接上面
//如何遍历数组
for(int i=0;i<names.length;i++){//注意没有=号
System.out.println(names[i]);
}
数组元素的默认初始化值
//接上面
//数组元素的默认初始化值
/**
* 数组元素是整型:默认是0
* 数组元素是浮点型:默认是0.0
* 数组元素是char型:是0(ASCⅡ码值为0不是数字0、字符0)或’\u0000‘
* 数组元素是boolean型:false(底层是0,与C中假为0类似)
* 数组元素是引用数据类型:null(空)
*/
int[] array0=new int[5];
for(int i=0;i<array0.length;i++){
System.out.println(array0[i]);//默认值是0
}
String[] array3=new String[5];//String是引用数据类型
for(int i=0;i<array3.length;i++){
System.out.println(array3[i]);//String类型默认值是null
}
char[] array4=new char[5];
for(int i=0;i<array4.length;i++){
System.out.println(array4[i]);//输出结果类似于空格(eclipse中),但不是,是0(ASCⅡ码值为0不是数字0、字符0)或’\u0000‘
System.out.println("---"+array4[i]+"***");//IDEA中什么都没有,但有初始值(???)
}
if(array4[0]=='\0'){//验证char型,'\0','\u0000',0都可以输出nihao,而'0'不行
System.out.println("nihao ");//说明是0(ASCⅡ码值为0)
}
if(array4[0]==0){
System.out.println("nihao ");//说明是0
}