在平时写代码的时候经常遇到一些很简单但是自己却不太理解的问题,于是整理了一下。
内存:一般情况下我们分为栈内存和堆内存。下面我们来说说它们的区别。
一、栈内存:用于存储局部变量,当数据用完的时候,它所占用的空间会自动释放。
public class demo1 {
public int xxx(int i)
{
int j=0;
for(int m=0;m<0;)
{
int n;
}
return j+i;//这里的 i j m n j+i 都是属于局部变量
}
}
二、堆内存:一般是储存数组、对象(就是通过new program() 创建的实例化)和全局变量。
特点是每一个实体都要其对应的地址值,并且实体中的变量都有其对应的默认初始化值(例:int[] 默认是 0,Boolean[] 默认是false,否就为null),当实体不被使用的时候,会在一个不确定的时间被回收机制自动处理。
public class demo1 {
static int i; //此处i就是一个全局变量,所以不用初始化赋值
public static void main (String[] args){
int [][]arr = new int[3][];
System.out.print(arr[0]);//这里输出为null,没有输出地址值,因为我们并没有去初始化这个二维数组
arr[0] = new int[1]; //手动初始化,有了地址值
System.out.print(arr[0]);//输出地址值}
}