前言
提示:记录Java学习历程:
学习方法提醒:
从数组开始,解决问题3步骤
1> 分析问题,把大问题细分为小问题,并映射知识点
2> 书写步骤,用知识点解决小问题,一个一个解决。
3> 总结这个需求你学到的
提示:以下是本篇文章正文内容,下面案例可供参考
一、JVM内存模型(掌握概念)
方法区: 线程共享的内存区域,存储已被虚拟机加载的类信息、常量、静态变量即时编译器编译后
的代码数据等(这个区域的内存回收目标主要是针对常量池的回收和对类型的卸载)。
Java虚拟机栈: 简称栈区(stack),每个方法被执行的时候都会同时创建一个栈帧用于存储该方
法的局部变量、操作栈、动态链接、方法出口等信息。
每当调用一个方法时,创建一个栈帧,存放了当前方法的局部变量,当方法调用完毕,该方法
的栈帧就被销毁了。
一句话:java方法执行时,在栈区执行
Java堆: 简称堆区(heap),被所有线程共享的一块内存区域,在虚拟机启动时创建。所有的对象实例以及 数组 都要在堆上分配。
每次使用new关键字,就表示在堆内存中开辟一块新的存储空间。
GC(Garbage Collection),垃圾回收器
Java的自动垃圾回收机制可以简单理解为,不需要程序员手动的去控制内存的释放。当JVM内存资源不够用的时候,就会自动地去清理堆中无用对象(没有被引用到的对象)所占用的内存空间。
二、数组定义(重点)
数组(Array),把具有 相同类型 的多个常量值 有序组织 起来的一种数据形式。这些按一定顺序排列的多个数据称为数组。
数组中的每一个常量值称之为数组元素(item),数组中使用索引/下标(index)来表示元素存放的位置,索引从0开始,步长是1。
数组元素类型[ ] 数组名;
例如: int[ ] ages;
数组在内存中是一段连续的内存空间。
理解:
- 可以把int[ ]看成是一种数据类型——int类型的数组类型。
- int[ ] 数组可以看出,该数组中的元素类型是int类型的。
- String[ ] 数组可以看出,该数组中的元素是String类型的。
三、数组初始化(重点)
数组在定义后,必须初始化才能使用。所谓初始化,就是在堆内存中给数组分配存储空间,并为每一个元素赋上初始值,有两种方式:
静态初始化;
动态初始化;
数组的长度是固定的,无论以哪种,一旦初始化完成,数组的长度(元素的个数)就固定了,不能改变,除非重新对该初始化。
如果我们事先知道元素是多少,选用静态初始化;
事先不知道元素是多少(但知道需要多少个的空间),选用动态初始化。
静态初始化
程序员直接为每一个数组元素设置初始化值,而数组的长度由系统(JVM)决定。
数组元素类型[] 数组名 = new 数组元素类型[]{元素1,元素2,元素3,…};
int[] nums = new int[]{1,3,5,7,9};
简单写法: int[] nums = {1,3,5,7,9};
public class ArrayDemo1{
public static void main(String[] args) {
//定义并初始化数组
int[] nums = new int[] {
1, 3, 5, 7 };
System.out.println("数组长度=" + nums.length);
//重新初始化数组
nums = new int[] {
2, 4, 8 };
System.out.println("数组长度="