Java基础:数组
数组:
数组是一组数据类型相同的数据的组合,将这些数据统一的管理起来
数组本身是一个引用数据类型,数组内存储的类型可以是基本数据类型,也可以是引用类型
数组的特点:
①数组本身是一个引用数据类型
②数组是在堆内存中的一串连续的地址存在
③数组在初始化时必须指定长度
④堆内存的数组空间长度一旦确定,不能再次发生改变
⑤堆内存的变量中存储的是数组的地址引用
⑥数组内部存储的类型可以使基本的,也可以是引用
1、数组的声明
数据类型[] 数组名字
int[] x;
char[] y;
boolean[] z;
String[] m;
2、数组的初始化(赋值)
静态初始化:有长度、有元素
int[] array = new int[]{10,20,30,40,50};
①int[] array = {10,20,30,40,50};
②int[] array;
此处略去一百行代码
array = new int[]{10,20,30,40,50};
注意:①②两种写法,第①种之前有int[]数据类型的定义,只有的new int[]可以省略
第②中写法array的前面没有int[],虽说很多行代码之前有int[] array;的定义,但new int[]不可以省略
动态初始化 有长度 没有元素(不是真的没有,有默认值)
int[] array = new int[5];
整数默认值-------------0
浮点数默认值-----------0.0
字符型默认值-----------0 ---->char
布尔型默认值-----------false
引用数据类型-----------null
3、数组元素的访问
通过元素在数组中的位置来访问
位置----->index索引
索引范围 [从0开始 数组长度-1]
越界则出现运行时的异常 ArrayIndexOutOfBoundsException
4、数组元素的遍历(轮询)
通过循环的方式访问数组的每一个元素
for(起始值;终止条件;变量){
}
JDK1.5版本之后 新的特性 增强for循环 或 加强for 或 forEach
for( 自己定义的变量(接收数组内的每一个元素) : 遍历的数组 ){
}
正常的for循环以及加强的for循环都需要非常的熟练
(1)正常的for 有三个必要的条件,index索引,找到某一个元素的位置,可以通过index直接访问数组的某一个位置,存值 取值都可以,不好在于写法相对来说比较麻烦
(2)增强for,有两个条件,用来取值的变量 ,用来遍历的数组 ,没有index索引,写法相对容易,不好在于只能取值,不能存值,没有index索引,找不到元素到底是哪一个
5、基本数据类型与引用数据类型在内存上的区别(非常重要)
int a = 10;
int b = a;
b = 100;
System.out.println(a); //? 10
int[] x =new int[]{10,20,30};//栈内存中的小容器,存储类型定义的东西,容器中只能存一份
//见到new关键字,相当于在堆内存中申请开辟了一块新的空间
//数组在对内存的空间形态是一串连续的地址
//基本数据类型变量空间存储的是值,传递的就是值 一个改变,另一个不变
//引用数据类型变量空间存储的是地址(引用),传递的就是应用 一个改变,另一个跟着改变
int[] y = x;
y[0] = 100;
System.out.println(x[0]); //?100
注意:
所有的变量空间都存储在栈内存中
变量空间可以存储基本数据类型,也可以存储引用数据类型
如果变量空间存储的是基本数据类型,存储的是值,一个变量的值改变,另一个不会跟着改变
如果变量空间存储的是引用数据类型,存储的是引用(地址),一个变量地址对应的值改变,另一个跟着改变
引用数据类型与基本数据类型在内存中的区别: