Java基础笔记(数组)

一、一维数组

 1.数组定义格式

    概念:数组(array)是一种用于存储多个相同类型数据的存储模型

      数组的定义格式:

(1)格式1:数据类型[ ] 变量名,例如:int [ ] arr。定义了一个int类型的数组,数组名是arr。(2)格式2:数据类型 变量名[ ], 例如:int arr[ ]。定义了一个int类型的变量,变量名是arr数组。

 2. 数组静态初始化

静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。

格式1:数据类型 [ ] 变量名 = new 数据类型[ ] {数据1, 数据2, 数据3, …}

int [ ] arr = new int[ ] {1, 2, 3};

格式2:数据类型 [ ] 变量名 = {数据1, 数据2, 数据3, …}

int [ ] arr = {1, 2, 3};

 3.数组动态初始化

动态初始化:初始化时只指定数组长度,由系统分配默认初始化

动态初始化格式:数据类型 [ ] 变量名 = new 数据类型[数组长度]

public class ArrayDemo{
	public static void main(String[] args){
	int[] arr = new int[3];
	/*
	左边:
		int:说明数组中的元素是int类型
		[]:说明这是一个数组
		arr:这是数组的名称
	右边:
		new:为数组申请内存空间
		int:说明数组中的元素类型是int类型
		[]:说明这是一个数组
		3:数组长度,其实就说数组中的元素个数
	}
}

3.java中内存分配(内存分配)

方法区:字节码文件加载时进入的内存,字节码文件(.class)由java源文件(.java)编译而成。

栈内存:方法运行时所进入的内存,也就是存储局部变量,定义在方法中的变量,使用完之后立刻弹出。

堆内存:存储new出来的内容(实体,对象),new出来的东西会在这块内存中开辟空间并产生地址。使用完毕,地址会被回收。

(1)例子1(静态数组/引用传递)

JVM自动寻找main方法,执行第一句代码,创建一个int型的静态数组arr,在栈中分配一块内存,存放一个指向堆区对象的指针0x10f87f48,由于是静态数组可以直接指定每个数组元素的初始值
执行第二句代码:根据arr指向的地址修改arr[0]的值为44
执行第三句代码:根据arr指向的地址修改arr[1]的值为55
执行第四句代码:根据arr指向的地址修改arr[2]的值为66
执行第四句代码:根据arr指向的地址输出arr[0]的值为44
执行第五句代码:根据arr指向的地址输出arr[1]的值为55
执行第六句代码:根据arr指向的地址输出arr[2]的值为66
执行完毕栈内存中所有变量弹出

(2)例子2(值传递)

JVM自动寻找main方法,执行第一句代码,创建一个int型的变量number,在栈中分配一块内存:int number = 100
执行第二句代码,打印语句:调用chang方法前:100
执行第三句代码,调用change方法,压入change(number),为change函数开辟一个新的栈内存空间
change方法是含形参的,形参对于内存而言是变量,而变量在内存中占有空间。因此change方法里面创建一个int型的变量number, 在栈中分配一块内存:int number = 100,此时number是由main里面接收而来。
接下来走change函数里面的逻辑,change里面将number修改为200
change(number)使用完毕没有逻辑了,弹栈消失
继续执行,打印语句,仍是主方法中的number值
所有逻辑完成,main弹栈消失

 (3)例子3(利用返回值修改值传递)

1.JVM自动寻找main方法,执行第一句代码,创建一个int型的变量number,在栈中分配一块内存:int number = 100
2.执行第二句代码,打印语句:调用chang方法前:100
3.执行第三句代码,调用change方法,压入change(number),为change函数开辟一个新的栈内存空间
4.change方法是含形参的,形参对于内存而言是变量,而变量在内存中占有空间。因此change方法里面创建一个int型的变量number, 在栈中分配一块内存:int number = 100,此时number是由main里面接收而来。
5.接下来走change函数里面的逻辑,change里面将number修改为200,并且返回number值,此时main里面的number值被修改为200

6. 接下来走change函数的逻辑已经结束,弹栈消失

7. 继续执行,打印语句,打印主方法中的number值,此时的number值由于change的返回值已经变成了200

8. 所有逻辑完成,main弹栈消失

 4.数组常见两种异常

二、二维数组

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值