目录
前言
介绍Java的三种内存分配(栈、堆、方法区)、成员变量和局部变量
一、java的内存
1、栈内存
方法运行时所进入的内存,变量也是在这里
方法执行完毕后会出栈(先进后出、后进先出)
2、堆内存
存放用new产生的数据并且开辟空间并产生地址(变量应用的对象及其成员变量和方法)
3、方法区内存
字节码文件加载时进入的内存(临时存储)
public class Test1
{
String name;
int age=0;
public viod study1(){
System.out.println("我喜欢学习Java");
}
}
public class TestStudent
{
public static void main(String[] args)
{
Student s=new Student();
System.out.println("s");
System.out.println(s.name+" "+s.age);
s.name="李华";
s.age=18;
System.out.println(s.name+" "+s.age);
s.study();
}
}
二、成员变量与局部变量
1、成员变量
类中方法外的变量
public class Student
{
private String name;
private int age;
}
2、局部变量
方法中的变量
public class Test
{
public static void main(String[] args)
{
int a=10;
new Student();
}
}
3、成语变量和局部变量的区别
区别 | 成员变量 | 局部变量 |
类中的位置不同 | 类中、方法外 | 方法内、方法申明上 |
初始化不同 | 有默认初始值 | 没有,使用前要进行赋值 |
内存的位置不同 | 堆内存 | 栈内存 |
生命周期不同 | 随着对象的创建而存在,随着对象的消失而消失 | 随着方法的调用而存在,方法运行结束就会消失 |
作用域 | 整个类中 | 当前方法中 |
在内存中的体现: