Java基础知识(五)
数组的概述
1、数组:存储相同数据类型的容器
2、没有数组的情况
如果需要定义多个数据,只能int a,int b一直进行定义,而且数据和数据之间没有关系,只能通过变量名进行获取,非常的不方便
3、有数组的情况
如果需要定义多个数据,可以创建一个容器,将数据存储到容器里面,数组里面都是有索引的,通过数组名和有规律的索引去访问到每一个元素,这个容器就是数组
通过有规律的索引去访问没有规律的元素
数组的定义
1、格式
元素的数据类型[] 数组名称 = new 元素的数据类型[数组的长度];
int[] arr = new int[3];
2、解释
1、元素代表数组存储的数据
2、元素的数据类型,数据存储数据的类型
3、[] 代表的是一位数组
4、数组名称,合法的标识符,给变量取名,第一个单词全部小写,从第二个单词开始,首字母大写,其他字母小写
5、= 赋值符号,将右边的数据赋值给左边的变量
6、new 数组是一个引用类型,存储在堆内存里面,new 就相当于在堆内存里面开辟一段空间
7、第二个元素的数据类型要跟第一个元素的数据类型保持一致
8、数组的长度:定义数组的大小,如果定义为3,数组只能存储三个元素
9、元素一旦创建,长度是不可以改变的
3、直接打印数组的结果 [I@15db9742
1、数组是一个引用类型,直接打印的话打印的是数组的地址,而不是数组中元素的值
2、[ 代表的是一位数组
3、I 数组的类型是int
4、@ 代表普通的分隔符
5、15db9742: 通过hashcode方法算出的哈希值,在转成16进制的数字
6、以后给这一串数字和符号叫做数组的地址
class Demo01_数组的定义 {
public static void main(String[] args) {
//定义一个数组
int[] arr = new int[3];
System.out.println(arr);
}
}
数组的初始化
1、初始化:在创建数组的时候进行初始化,jvm好分配多大的内存空间
2、分类
1、动态的初始化
2、静态的初始化
3、动态初始化
1、创建数组的时候并不知道要给元素赋什么值,等创建数组完毕的时候,在对数组的元素进行一一赋值
2、元素的数据类型[] 数组名称 = new 元素的数据类型[数组的长度];
int[] arr = new int[3];
3、数组的长度一定要给,数组创建好之后,长度是不能改变的
4、数组的赋值 通过数组名和索引相结合的方式进行赋值
5、索引:下标、角标 从0开始,到数组的长度-1结束
第一个元素的索引是0,第二个元素的索引1 最后一个元素的索引是长度-1
6、数组名[索引] = 要赋的值;
7、如果是int类型的数组元素没有进行赋值,默认值就是0
4、静态初始化
1、在创建数组的时候,就叫里面的元素进行赋值
2、格式
元素的数据类型[] 数组名称 = new 元素的数据类型[]{元素的罗列};
int[] arr = new int[] {2,5,7};
3、元素罗列的数据类型必须跟前面声明的元素数据类型保持一致
4、元素的罗列通过逗号进行分割,最后一个元素不要给逗号
5、=号后面的中括号千万不要给长度
6、静态初始化的简写格式
元素的数据类型[] 数组名称 = {元素的罗列};
int[] arr = {1,2,3};
7、如果使用简写的方式,不能将数组的声明和数组的赋值分类开来
int[] arr; arr = new int[]{1,2,3}; 正确
int[] arr; arr = {1,2,3}; 错误
class Demo02_动态初始化 {
public static void main(String[] args) {
//动态初始化
int[] arr = new int[3];
//打印第一个元素 数组名[索引]
System.out.println(arr[0]);
//打印第二个元素
System.out.println(arr[1]);
System.out.println