一、数组的基本概念
(一)为什么要使用数组
在需要使用多个相同类型数据的时候,如果一个一个创建变量会十分麻烦,使用数组可以减少这种问题。
(二)什么是数组
数组就是相同类型元素的一个集合。
数组在内存中的存储是连续的,且都有一个从0开始依次递增的下标。
(三)数组的创建及初始化
1.数组的创建
T[] 数组名 = new T[N];
T:表示数组中存放元素类型
T[]:表示数组的类型
N:表示数组的长度
2.数组的初始化
数组的初始化主要有两种:动态初始化和静态初始化。
//动态初始化
int[] a1=new int[7];//第一种
int[] a2;
a2=new int[7];//第二种
//静态初始化
int[] b1=new int[]{
1,2,3,4,5,6,7};//第一种
int[] b2;
b2=new int[]{
1,2,3,4,5,6,7};//第二种
//简写版本(不能分开写)
int[] c={
1,2,3,4,5,6,7,8};
也可以像C语言那种写法,但是不推荐,也不做示范了。
(四)数组的使用
1.数组中的元素访问
数组在内存中的存储是连续的,且都有一个从0开始依次递增的下标。数组可以通过下标访问在自己范围内的任意位置的元素。
下标范围:[0,数组.length)。
2.遍历数组
//遍历数组的两种方式。
int[] a={
1,2,3,4,5,6,7,7,8};
//for循环
for (int i = 0; i < a.length; i++) {
//需要执行的操作语句。
}
//for-each循环
for(int x:a){
//需要执行的操作语句。(直接对变量a进行操作)
}
两个遍历方法的区别在于:for循环可以拿到下标,直接对数组进行操作,而for-each循环则是通过把数组值依次赋给变量,间接实现操作的。
二、数组是引用类型
(一)初识JVM的内存分布
目前需要了解到的是两个:
- 平时说的栈就是虚拟机栈。局部变量啥的都放在这里面。
- 堆一般是用来存储对象的。
(二)基本类型变量与引用类型变量的区别
基本变量是根据基本数据类型创建的变量。它对应的存储空间存储的是自己的真实值。
引用数据类型创建的变量被称为对象的引用,它对应的存储空间存储的是对象所在空间的地址(在堆中空间的起始地址)。引用变量通过地址对对象进行操作。
对象一定在堆上,引用类型不一定在栈上。
(三)再谈引用类型变量
举例:
public class Main {
public static void main(String[] args) {
int[] a1={
1,2,3};
int[] a2={
10,20,30};
a1=a2;
a1[0]=7;
a1[1]=8;
a1[2]=9;
for