2020/5/14 方法 数组 Java内存划分
方法定义三要素
返回值类型
方法名称
参数列表(变量)
注意事项
方法不能嵌套
方法顺序无所谓
方法定义后不会执行,需调用
方法有返回值,必须写return 返回值
return返回值数据类型得和方法返回值类型对应
void方法的return;可以不写
一个方法可以有多个return语句,但必须保证同时只有一个return被执行
重载(overload)
多个方法的名称一样,但参数列表不同
1.参数个数不同
2.参数类型不同
3.参数的多类型顺序不同
注意事项
与参数名称无关
与参数返回值类型无关
数组
是一种容器,可以同时存放多个数据
特点:
1.一种引用数据类型
2.数组中的多个数据类型必须统一
3.数组长度在程序运行期间不能改变
初始化方式
1.动态初始化 (指定长度)
格式:
数据类型 [] 数组名称 = new 数据类型 [数组长度(int数字)];
例:创建一个可以存放300个int类型数据的数组
int [] array = new int [300];
2.静态初始化 (指定内容)
格式:
数据类型 [] 数组名称 = new 数据类型 []{元素1,元素2,…};
例:创建一个数组,里面装的都是int数字,具体为:5,15,25
int [] array = new int[]{5,15,25};
省略格式:
数据类型 [] 数组名称 = {元素1,元素2,…};
注意事项
静态初始化标准格式可以拆分成两个步骤
1.int[] array
2.array = new int[] {…,…,…}
动态初始化标准格式也可以拆成两个步骤
1.int [] array
2.array = new int[5]
静态初始化的省略格式不能拆分成两个步骤
不确定具体内容推荐用动态,已知道内容的用静态
直接打印数组,得到的是数组对应的内存地址哈希值
访问数组元素格式
数组名称[索引值] 索引值从0开始,一直到 n-1为止
**使用动态初始化时,其中元素会自动拥有默认值 **
数据类型 | 默认值 |
---|---|
整型 | 0 |
浮点型 | 0.0 |
字符型 | \u0000 |
布尔型 | false |
引用类型 | false |
Java内存划分
划分为5个部分:
栈(stack):存放方法中的局部变量(方法参数),方法运行一定在栈中运行,一旦超出作用域,立刻从栈内存中消失。栈中只保存基础数据类型本身和自定义对象的引用
堆(Heap):凡是new出来的东西都在堆中,唯一目的就是存放对象实例,堆中不存放基本类型和对象引用,只存放对象本身和数组本身
方法区(Method Area):存储class相关信息,包括方法的信息;包含整个程序永远唯一的元素,如class、static变量
本地方法栈:与操作系统有关
寄存区:与CPU相关
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gi00YiLo-1589468652190)(C:\Users\10145\AppData\Roaming\Typora\typora-user-images\image-20200514225939237.png)]
Area):存储class相关信息,包括方法的信息;包含整个程序永远唯一的元素,如class、static变量
本地方法栈:与操作系统有关
寄存区:与CPU相关
[外链图片转存中…(img-gi00YiLo-1589468652190)]
个人理解:方法区存储的是方法信息,调用时前往栈区开辟空间运行方法,而栈区中的方法信息只有方法参数以及对应地址,数据存储在堆区中,要想调用或修改数据,需要寻址至堆区地址对应区域赋值或调用。