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
原创粉丝点击