【JavaSE】【基础语法06】数组

一、数组的相关概念

1、数组的相关概念[了解]

数组(Array),就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,以便统一管理他们,然后用编号区分他们,这个名字称为数组名,编号称为下标或索引(index)。

  • 组成数组的各个变量称为数组的元素(element)。
  • 数组中元素的个数称为数组的长度(length)。
例如:int[] scores = {80,90,87,68,99,100,79,96};   
元素1:scores[0]=80;  
数组的长度为8

2、数组的特点[掌握]

1、数组的长度一旦确定就不能修改
2、创建数组对象会在内存中开辟一整块连续的空间。而数组名中引用的是这块连续空间的首地址。
3、遍历数组和获取某个元素的速度快,可以通过数组名+下标直接定位到任意一个元素。

3、数组类型与数组元素的类型[理解]

  • 数组中的元素可以是任何数据类型,包括基本类型和引用类型
  • 数组属引用类型,把数组看成对象(object),数组中的每个元素相当于该对象的成员变量。

例如:
(1)基本数据类型元素的数组
int[] scores = {80,90,87,68,99,100,79,96};
scores数组的类型是:int[],元素的类型是int
scores是一个对象,scores[0],scores[1]等元素是scores对象的成员变量

(2)引用数据类型元素的数组
String[] strings = {“hello”,”java”,”world”,”array”};
strings数组的类型是:String[],元素的类型是String
strings是一个对象,strings[0],strings[1]等元素是strings对象的成员变量

4、数组的分类[了解]

数组按照维度分为:一维数组、二维数组、多维数组
数组按照元素的数据类型分:基本数据类型元素的数据,引用数据类型元素的数组(也称为对象数组)

二、一维数组

1、一维数组的声明[掌握]

数组的声明:
元素数据类型[] 数组名;
元素数据类型 数组名[];
例如:int []arr; int arr[]; Student arr[];

2、一维数组的初始化[掌握]

1、静态初始化

直接指定元素,由元素决定数组长度
数组名 = new 元素数据类型[]{元素1的值,元素2的值,…};
说明:
(1)静态初始化时数组的长度由{}中罗列的元素的个数决定
(2)静态初始化时[]中不可以再写长度
(3)如果声明与初始化一起,可以简写:
元素数据类型[] 数组名 = {元素1的值,元素2的值,…};

例如:
int[] arr = {1,2,3,4,5,6};
String[] arr = {“hello”,”java”,”world”};
Student[] arr = {new Student(“貂蝉”), new Student(“王昭君”, new Student(“西施”),new Student(“杨玉环”) };

2、动态初始化

数组名 = new 元素数据类型[数组的长度];
说明:
(1)动态初始化时数组的长度在[]中指定,而且必须指定
(2)动态初始化时每一个元素有默认值
注意:
(1)无论是静态初始化还是动态初始化必须确定数组长度。
动态初始化在创建数组对象时,显式指明长度,静态初始化,由列出的元素个数确定数组的长度
(2)int[] arr = new int[5]{1,2,3,4,5};//错误
(3)int[5] arr ;//错误
(4)数组的长度一旦确定,不可改变
(5)元素的数据类型是引用数据类型,在刚刚动态初始化后,元素的值是null,并没有创建元素的对象,元素的对象需要单独创建。
例如:Student[] arr = new Student[3];此时arr[i]为null,arr[i]并没有指向任何学生对象,此时arr[i].属性或arr[i].方法都会报空指针异常
String[] arr = new String[3];此时arr[i]也为null,arr[i]中并没有存储任何字符串对象

3、一维数组元素的访问与赋值[掌握]

数组的元素表示方式:数组名[下标]
下标的范围是:[0,数组的长度) 或[0,数组的长度-1]
数组元素的赋值:数组名[下标] = 值;
例如:
nums[0] = 15;
students[1] = new Student(“柴美女”);

4、一维数组的长度[掌握]

数组名.length

5、一维数组的遍历[掌握]

普通for
for(int i=0;i<数组名.length;i++){
System.out.println(数组名[i]);
}

增强for:foreach循环
for(元素的数据类型 变量名 : 被遍历的数组名){
System.out.println(变量名); //每循环一次,变量名代表一个元素
}
区别:
普通for可以修改数组元素的值,增强for不行;
普通for可以获取下标信息,增强for没有下标信息;
仅遍历时增强for效率高

6、一维数组的内存分析[理解]

数组对象是在堆中创建的,元素相当于数组对象的成员变量
创建数组对象会在堆中开辟连续的空间
元素是基本数据类型的一维数组

int[] s;
s = new int[10];
for ( int i=0; i<10; i++ ) {
	s[i] =2*i+1;
}

在这里插入图片描述

引用数据类型元素的一维数组(面向对象之后讲)
MyDate[] m; //MyDate是自定义类型,好比Student
m = new MyDate[10]; //引用类型的元素的默认值null
for ( int i=0; i<10; i++ ) {
m[i] =new MyDate(i+1, i+1,1990+i); //每一个元素又new对象
}
在这里插入图片描述

三、数组的常见异常[理解]

(1)越界 ArrayIndexOutOfBoundsException
(2)空指针 NullPointerException

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值