Java数组概述
数组的定义
- 数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问他们。
数组的基本特点
-
长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
-
其中元素必须是相同类型,不允许出现混合类型。元素的类型可以是Java支持的任意类型。
-
数组类型可以是任何数据类型,包括基本类型和引用类型。
-
数组的元素在堆内存中被分配空间,并且是连续分配的。
-
使用new关键字对数组进行内存的分配。每个元素都会被JVM赋予默认值。默认规则:
整数:0
浮点数:0.0
字符:\u0000
布尔:false
引用数据类型:null
-
数组的元素都是有序的,序号从0开始,称作数组的下标、索引、角标。
数组的声明
- 声明的时候并没有实例话任何对象,只有在实例化数组对象时;JVM才分配空间,这时才与长度有关。
- 声明一个数组的时候并没有数组真正被创建。
- 构造一个数组,必须指定长度。
数组格式
-
元素类型[] 数组名 = new 元素类型 [元素个数或数组长度];//int [] = new int [3];
-
[] : 代表这是数组类型。
-
数组名:一个合法的标识符,命名规范和局部变量规范一致。
-
new:是Java的关键字。用来向JVM申请内存的。
-
元素类型[元素个数]:决定了向JVM申请的内存空间的大小。
大小:元素类型字节数*元素个数
-
元素的个数:只要是一个合法的Java表达式就可以。返回一个int类型的值即可
-
example
public calss Test{
public static void main(String args[]){
int[] s = mull;//声明数组
s = new int[10];//给数组分配空间
for(int i =0; i < 10;i++){
s[i] = 2 * i + 1;//给数组赋值
System.out.println(s[i]);
}
}
}
数组声明的两种方式:
- 数据类型 [] 数组的名字 例如:int [] a;
- 数据类型 数组的名字 [] 例如:int a [];
- 注意:在Java语言中两种声明方式没有任何区别,但是建议用第一种,避免混淆a的数据类型。
数组的创建
数组创建的三种方式:
-
声明数组的同时,根据指定的 长度分配内存,但数组中元素值都为默认的初始话值。
int [] ary0 = new int [10];
-
声明数组并分配内存,同时将其初始化。
int [] ary1 = new int [] {1,2,3,4,5};
-
与前一种方式相同,仅仅只是语法相对简略。
int [] ary2 = {1,2,3,4,5};
数组创建可以分为动态和静态两种
-
动态创建数组(没有为元素赋值,可以结合for循环进行赋值)
char [] chAry = new char [];
-
静态创建数组,在创建的时候,即为每个元素赋初始值
int [] ary1 = new int [] {1,2,3,4,5};
-
数组的长度:length属性
int [] b1 = new int [] {1,2,3,4,5,6,7};
System.out.println(b1.length);
数组的初始化
-
静态初始化:int [] arr = {1,2,3}; //静态初始化基本数据类型;
-
动态初始化:int[] arr = new int[2]; //动态初始化数组,先分配空间;
arr[0] = 1; //给数组元素赋值;
arr[1] = 2; //给数组元素赋值;
-
默认初始化
int arr[] = new int[2]; //默认值0.0
boolean[] b = new boolean[2]; //默认值:false,false
String[] s = new String[2]; //默认值:null,null
数组的优缺点
优点
- 可以保存若干个数据。
- 随机访问的效率很高,根据下标访问元素效率很高。
缺点
- 数组的元素的类型必须一致,元素类型必须一致。
- 连续分配空间在堆中,如果数组的元素很多,对内存的要求更加的严格。
- 根据内容查找元素效率比较低,需要移动大量的元素。
- 数组定长,不能自动扩容。
- 数组没有封装,数组对象只提供了一个数组长度的属性,但是没有提供方法用来操作元素。Java提供了一整套的、针对不同需求的、对于容器的解决的方案。集合框架部分,不同的容器有不同的特点,满足不同的需求。数组的缺点都会被消除。
本文详细介绍了Java数组的概念、特点、声明及创建方式,并讨论了数组的初始化、长度属性及其优缺点。
1443

被折叠的 条评论
为什么被折叠?



