java基础之内存
来源:互联网 发布:网站关键词优化推广 编辑:程序博客网 时间:2024/05/17 09:13
1 内存划分
栈(stack):局部变量、对象声明的引用
堆(heep):new出来的类或数组的实例(含成员变量)
静态域:静态变量(用static修饰的变量)
常量池:字符串常量(用final修饰的)
2 内存图
Person类:public class Person{private String name;private int age;private static int legs = 2;public void setName(String n){this.name = n;}}main方法的代码:public static void main(String[] args){Person p1 = new Person();p1.setName(“zhangsan”);p1.setAge(20);System.out.println(p1);}
第一行代码:Personp1 = new Person();
Person p1:对象声明的引用,存放在栈内存。
new Person() new出来的实例,在堆内存中。调用Person类的无参构造函数。name初始值为null,age初始值为0
第二行代码:p1.setName(“zhangsan”);
调用类方法:
private void setName(String n){
this.name= n;
}
n为局部变量,存放于栈内存。setName方法执行完后,n出栈
name类型为String类型的常量,存放于常量池
第三行代码:p1.setAge(20);
调用类方法:
private void setAge(int a){
this.age= a;
}
a为局部变量,存放于栈内存。setAge方法执行完后,a出栈
a为基本数据类型,进行值传递
3 练习
class Value{int i = 15;}class Test{public static void main(String[] args){Test t = new Test();t.first();}public void first(){int i=5;Value v = new Value();v.i = 25;second(v,i);System.out.println(v.i);}public void second(Value v, int i){i = 0;v.i = 20;Value val = new Value();v = val;System.out.println(v.i + " " + i);}}
Test t = new Test();
t.first()
public void first(){
int i=5;
Value v = new Value();
v.i = 25;
second(v,i);
System.out.println(v.i);
}
second(v,i);
public void second(Value v, int i){
i = 0;
v.i = 20;
Value val = new Value();
v = val;
System.out.println(v.i +" " + i);
}
System.out.println(v.i + " " + i); //15 0
System.out.println(v.i); // 20
- java基础之内存
- Java基础之内存
- java基础之内存分配
- Java基础之内存回收机制
- java基础之内存机制详解
- java虚拟机基础之内存区域
- java之内存泄漏
- JAVA之内存回收
- java之内存分配
- java之内存泄露
- Java虚拟机之内存
- java之内存机制
- Java之内存模型
- Java基础之内存泄漏与避免技巧
- php之内存管理基础
- 基础知识之内存管理基础
- Android基础之内存溢出
- Android基础之内存泄露
- 关于android软件盘得调出和监听
- TestComplete9.2增强支持 Embarcadero RAD Studio XE3、Ext JS
- SQL Server如何查询当前服务器有多少连接请求
- 【模式匹配】之——多模匹配 下篇(AC算法之前缀树实现)
- c++学习之const成员变量与成员函数
- java基础之内存
- Max Sum(动态规划)
- xcode修改字体大小
- Poj 1142 Smith Numbers
- struct sockaddr 与 struct sockaddr_in
- 绿色软件下载网站
- centOS学习(3)--文件内容查阅
- 三轴陀螺仪与加速度计如何辅助Iphone定位的
- Inventor 2014 API 新功能 (11) 戳记 Imprinting