Java学习(五)之数组

数组

数组可以看成时一个容器,是一组数据类型相同的数据的组合,数组本身是一个引用数据类型,数组内存储的类型可以是基本类型,也可以是引用类型。

  • 数组的特点
    • 数组本身是一个引用数据类型
    • 数组是在堆内存中的一串连续的地址存在
    • 数组在初始化时必须指定长度
    • 堆内存中的数组空间长度一旦确定,不能再次发生改变
    • 栈内存的变量中存储的是数组的地址引用
    • 数组内部存储的类型可以是基本,也可以是引用
      1.数组的定义(声明)
//数据类型[] 数组名字;
int[] arr;

2.数组的初始化

  • 静态初始化
int[] array = new int[]{10,20,30,40};
int[] array = {10,20,30,40};
  • 动态初始化
    有长度,没有元素(默认值)
    整数默认值 – 0
    浮点数默认值 – 0.0
    字符型默认值 – 0 对应的char 97-a,65-“A” 48-0
    布尔型默认值 – false
    引用数据默认值-- null
int[] array = new int[5]

3.数组元素的访问
 通过元素在数组中的位置来访问(从0开始)
 存值/取值
 位置---->index索引,索引[从0 开始----数组长度-1]
 如果数组的索引超出了上述范围,会出现运行时异常:ArrayIndexOutOfBoundsException
4.数组元素的遍历
 通过循环的方式访问数组的每一个元素
 JDK1.5版本之后 增强for循环

for(自己定义的变量(接收数组内的每一个元素):数组名){
	代码;
}
int[] array = {10,20,30};
for(int i= 0; i<array.length;i++) {
	System.out.println(array[i]);
}
System.out.println("---------------------------------");
for(int value: array){
	System.out.println(value);
}

输出结果

10
20
30
---------------------------------
10
20
30

*5.基本类型和引用类型在内存结构上的区别

int[] array = new int[]{10,20,30}

见到new关键字,相当于在堆内存中申请开辟一块新的空间
所有的变量空间都存储在栈内存中
变量空间可以存储基本数据类型,也可以存储引用数据类型
如果存储的是基本数据类型,存储的是值,一个变量改变,另一个不会跟着改变
如果变量空间存储的是引用数据类型,存储的是引用(地址),一个变量地址对应的值改变,另一个跟着改变

public class Demo{
	public void main(string[] args){
		int[] a = {1,2,3,4}
		int[] b = a
		b[0] = 10
		System.out.println(a[0])
		System.out.println(b[0])
	}
}
//输出
10
10

在这里插入图片描述
在栈内存中开辟了一个int数组类型的变量空间叫a,然后new关键字是申请在堆内存中开辟一个连续的,数据类型为int的变量空间,并且将数组首地址赋值给a,因此可以通过a访问数组的所有元素;
int [] b = a;是在栈内存中开辟了int数组类型的变量空间b,并且将a中的元素赋值给它,因此b中存放的也是数组的首地址(图中的红色三角形),改变了b[0]的值,就是改变了堆内存中数组首地址的值,因此a[0]的值也跟着改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值