java中对象、成员变量、静态变量、方法的内存分配
2017-03-09 21:04
363 查看
http://jameszhao1987.iteye.com/blog/1320630
ava中内存主要包含4块,即heap(堆内存)、stack(栈内存)、data segment(静态变量或是常量存放区)、codesegment(方法区).
堆内存中存放的是new出的对象,new出的对象只包含成员变量。
栈内存中:存放的是局部成员变量。对于基本的数据类型存放的是基本变量的值,而对于对象变量,存放的是堆内存的地址。
静态、常量区:存放的是静态变量(类变量)或是常量。
方法区:存放的是对象的方法。因此即使new出多个对象也是只是存在一个方法。
如
A a = new A(); A中含有一个work方法,2个成员变量a,b。那么对应的内存分配为
则 a是分配在栈内存中。里面存放了一个指向堆内存中存放的new A()的地址。
new A()会导致在堆内存中分配一块空间,该内存中的A对象同时会含有a和b。
work()方法会在codesegment区中分配内存。
如果此时 A b = a;则表示把a的值复制给b,即b的值为a中保存的地址
ava中内存主要包含4块,即heap(堆内存)、stack(栈内存)、data segment(静态变量或是常量存放区)、codesegment(方法区).
堆内存中存放的是new出的对象,new出的对象只包含成员变量。
栈内存中:存放的是局部成员变量。对于基本的数据类型存放的是基本变量的值,而对于对象变量,存放的是堆内存的地址。
静态、常量区:存放的是静态变量(类变量)或是常量。
方法区:存放的是对象的方法。因此即使new出多个对象也是只是存在一个方法。
如
A a = new A(); A中含有一个work方法,2个成员变量a,b。那么对应的内存分配为
则 a是分配在栈内存中。里面存放了一个指向堆内存中存放的new A()的地址。
new A()会导致在堆内存中分配一块空间,该内存中的A对象同时会含有a和b。
work()方法会在codesegment区中分配内存。
如果此时 A b = a;则表示把a的值复制给b,即b的值为a中保存的地址
相关文章推荐
- java中对象、成员变量、静态变量、方法的内存分配
- JAVA基础day05 面向对象思想 成员变量和方法 封装 构造方法和this的使用
- 重踏学习Java路上_Day07(成员与局部变量,形参,匿名对象,封装,private,this,构造与成员方法,static)
- Java反射---Class对象,获得类的方法、成员变量和构造函数信息
- JAVA基础初探(三)面向对象思想、类与对象、成员变量与局部变量、构造方法、static关键字详解
- 关于JAVA继承类的静态变量、成员变量、父子类构造方法调用顺序的探讨 .
- Java类和对象、方法、成员变量和局部变量
- JAVA面向对象基础:成员变量、方法、方法的重载、构造函数
- 关于JAVA继承类的静态变量、成员变量、父子类构造方法调用顺序的研究
- java 面向对象基础 类 成员变量和局部变量 成员方法
- Java成员变量、局部变量、静态变量、成员方法、全局方法等概念的区别
- Java成员变量、局部变量、静态变量、成员方法、全局方法等概念的区别
- Java成员变量、局部变量、静态变量、成员方法、全局方法等概念的区别
- Java成员变量、局部变量、静态变量、成员方法、全局方法等概念的区别
- java面向对象思想之方法的重载、this变量、静态变量、Java中的常量
- java基础七(成员变量 局部变量 匿名对象 封装 设计原则 private this 构造方法 static)
- Java基础-07.总结private,this,封装,static,成员方法变量,局部变量匿名对象
- 关于JAVA继承类的静态变量、成员变量、父子类构造方法调用顺序的探讨
- Java面向对象详谈——方法与成员变量
- 通过Java对象来遍历成员方法,成员变量,构造函数