java数据类型:基本数据类型、引用数据类型(三种其中一种:数组类型)

  java内存结构java在启动时,一共在空间划分了5片空间来进行自己数据的存储(栈内存,堆内存, 方法区,本地方法区,寄存器)

  栈内存:特点是数据使用完毕,会自动释放(凡是局部变量(定义在方法中的变量、定义在方法参数上 的变量、定义在for循环里面的变量)都在栈内存中)

  堆内存:特点

  1.是堆里面每一个实体都有一个存放位置,都有一个内存地址值,凡是new出来的实体都在堆里面,堆里面存放的就是实体,实体包括数组和对象;

  2.堆内存中实体是用于封装数据的,而堆内存实体中的数据都有默认初始化值(数组中数值类为int型默认0,double型默认为0.0等)

  3.实体不在被使用,会在不确定的时间内被垃圾回收器回收(x = null,则代表x不再指向这个 数组,而是值为空,则x不知道了数组的地址,也就跟这数组没有关系,而这数组就没人使用了。则当一个实体在堆内存中没有任何引用所使用的时候,java虚拟机就视他为垃圾。)

  java垃圾回收机制:java语言本身成长于c++,优化了一些C++语言的特性; C++语言的特点在于,我们 写 的很多程序运行的时候会在内存中开辟空间,当内存中的实体越来越多的时候,比较占用内存空间,有些实体不用了需要清除,C++的做法是由程序员手动调用一个功能,将内存中的这部分数据清除掉;而java只要实体或对象在堆中变成垃圾,java虚拟机会自动启用垃圾回收机制,在不确定的时间内将垃圾清除掉。

  举例:int[] x = new int[3];在内存中是这样的,首先是在栈内存中定义了一个x,在堆内存中分配了三个格子,每个都有编号,每个格子存放数组对应值(实体)。堆中每个实体,都有个存放位置(地址),该数组的起始地址(假设0x0079),标识数组在堆内存存放的首地址,将该地址值赋给x,则称x指向了这个数组或者叫做x引用了这个数组(引用数据类型的由来)。