Java中的内存分配、栈、堆及数组
Java中的内存是怎样进行分配的?
内存的申请和释放都是jvm进行管理的,Java程序要运行,jvm会自动的向电脑申请一块内存。
这块内存分为5个部分:
栈(Stack)
主要存放局部变量(重点)
堆(Heap)
凡是new出来的东西都在堆里面,堆当中的数据都有默认原则;(重点)
堆当中数据的默认值
方法区(Method Area)
存放的是与.class相关的信息
本地方法区(Native Meat后的 Area)
与操作系统有关
寄存器(Register)
与cpu有关
数组
产生的原因
多个相同数据类型变量存储
- 数组用来将相同的数据类型存储在存储单元里,数组的所有元素必须属于相同的数据类型
定义数组
数组类型【】数组名;
数组是一个引用数据类型
定义好数组以后,要对数组进行初始化
初始化
动态初始化
指定数组的长度,一旦长度指定就是数组中只能存储多少数据
1.两种格式:
- 数组类型【】数组名=new 数组类型【数组长度】;
- 数组类型【】数组名; 数组名=new 数组类型【数组长度】;
静态初始化
不直接指定数组长度,而是直接在初始化数组的同时给数组赋值
-
数组类型【】数组名=new数组类型{数据1,数据2,…}
-
数组类型【】数组名;数组名
创建好的数组通过数组的下标,数组的下标从0开始。
数组类型【】数组名={数据1,数据2,…};最简洁
- 获取数组长度:数组名.length
- 数组长度一旦定义,不可改变。
数组中的默认值
数组中既可以存放基本数据类型变量,也可以存放引用数据类型变量(数组中也可以存放对象)
下标
- 0~数组的长度-1
- 数组的长度
数组名.length - 访问数组中特定的元素
数组名【下标】
常见操作
- 遍历
- 普通for循环
- while循环
- 增强for循环
- stream api
- 排序(冒泡、选择)
- 求最值
- 逆序
多维数组—二维数组
方法函数
- 定义
返回值类型 法名(参数列表…) {
// 法体
// return 返回值;
} - 方法重载
同一个类中,方法名相同,参数列表不同
学习笔记