JavaSE 面向对象内存图&静态变量内存图
来源:互联网 发布:网络代理地址 编辑:程序博客网 时间:2024/05/17 02:09
1.创建对象内存图
package cn.itcast.oop;public class PhoneDemo {public static void main(String[] args) {Phone p = new Phone();//给成员变量赋值p.brand = "小米";p.price = 1999;p.color = "红色";System.out.println(p.brand+"---"+p.price+"---"+p.color);//调用方法p.call("风清扬");p.sendMessage();p.playGame();//第二个手机Phone p2 = new Phone();//给成员变量赋值p2.brand = "华为";p2.price = 1699;p2.color = "黑色";System.out.println(p2.brand+"---"+p2.price+"---"+p2.color);//调用方法p2.call("令狐冲");p2.sendMessage();p2.playGame();}}class Phone{String brand;//品牌int price;//价格String color;//颜色//打电话public void call(String name){System.out.println("给"+name+"打电话");}//发短信的方法public void sendMessage() {System.out.println("群发短信");}//玩游戏的方法public void playGame() {System.out.println("玩游戏");}}
步骤:
1.加载类的字节码对象,PhoneDemo.class 以及Phone.class-->在方法区的class内容区域
2.main方法进栈,同时开辟一段内存给main方法
3.Phone p-->在堆内存中new一个Phone对象开辟一段内存空间,进行初始化值brand=null;price=0;color=null;
4.赋值给p的属性进行赋值,brand变为小米,price变为1999,color变为灰色,此时的p指向了堆内存中的new Phone()对象
5.调用p.call方法-->进栈执行完程序 出栈,调用p.senMessage方法-->进栈执行完程序 出栈,调用p.playGame方法-->进栈执行完程序 出栈.
6.同理p2指向堆内存中new出来的Phone().... 注:地址不同.
2.静态的理解:
静态变量是存在于方法区中的静态区中,是随着类的加载而加载,是专属于类的,而不是专属于某个单独的对象的,每一个对象都可以共享静态变量.
0 0
- JavaSE 面向对象内存图&静态变量内存图
- JavaSE基础之创建对象内存图
- JAVA面向对象内存图
- JAVASE总结--06(面向过程、面向对象、内存分析)
- <JavaSE学习笔记>面向对象(2):Java内存机制
- 静态变量static的内存图
- java 对象 实例变量 静态变量内存分配
- javaSE-面向对象-静态代码块
- 面向对象_一、二、三个对象的内存图
- 面向对象第六课,static变量和方法,内存分析
- 面向对象 内存
- PHP面向对象静态变量
- 面向对象—静态变量
- java面向对象之成员变量和局部变量 以及他们的内存分配
- 面向对象的内存分配
- 面向对象的内存调用
- 面向对象与内存管理
- 面向对象的内存分析
- hdu 1326 java (理解起来很简单)
- 题解打包下载链接
- java 多线程中的异常处理
- java 获取路径相关问题
- c 语言实现httpclient端的post,get, delete
- JavaSE 面向对象内存图&静态变量内存图
- Java中遍历Map的方法
- Edit Distance 计算两个字符串的变化距离 动态规划
- Android错误之--Platform MNC is a preview and requires application manifest to set minSdkVersion to 'M
- 关于子进程继承父进程属性的小问题总结
- eclipse构建maven的web项目
- 你不知道java问题if后面加不加括号的问题
- windows遍历文件夹
- Linux环境Nginx安装与调试以及PHP安装