一个对象的内存图,两个对象使用同一个方法的内存图,两个引用指向同一个对象的内存图

Java对象内存图解析
博客主要介绍了Java相关的内存图,包括一个对象的内存图、两个对象使用同一个方法的内存图以及两个引用指向同一个对象的内存图,聚焦于Java内存使用情况的可视化展示。

 一个对象的内存图

public class Phone {
    String brand; //品牌
    double price; //价格
    String color; //颜色
    public void call(String who) {
        System.out.println("给" + who + "打电话");
    }
    public void sendMessage() {
        System.out.println("群发短信");
    }
}
class Demo01PhoneOne {
    public static void main(String[] args) {
        Phone one = new Phone();
        System.out.println(one.brand); //null
        System.out.println(one.price); //0.0
        System.out.println(one.color); //null
        one.brand = "苹果";
        one.price = 8388.0;
        one.color = "黑色";
        System.out.println(one.brand); //苹果
        System.out.println(one.price); //8388.0
        System.out.println(one.color); //黑色
        one.call("乔布斯");  //给乔布斯打电话
        one.sendMessage();  //群发短信
    }
}
D:\Java\jdk-17\bin\java.exe "-javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2022.2.3\lib\idea_rt.jar=9084:D:\BaiduNetdiskDownload\IntelliJ IDEA 2022.2.3\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\JavaSenior\out\production\variableandoperator Demo01PhoneOne
null
0.0
null
苹果
8388.0
黑色
给乔布斯打电话
群发短信

Process finished with exit code 0

 

 两个对象使用同一个方法的内存图

public class Phone {
    String brand; //品牌
    double price; //价格
    String color; //颜色

    public void call(String who) {
        System.out.println("给" + who + "打电话");
    }

    public void sendMessage() {
        System.out.println("群发短信");
    }
}

class Demo02PhoneTwo {
    public static void main(String[] args) {
        Phone one = new Phone();
        System.out.println(one.brand); //null
        System.out.println(one.price); //0.0
        System.out.println(one.color); //null
        one.brand = "苹果";
        one.price = 8388.0;
        one.color = "黑色";
        System.out.println(one.brand); //苹果
        System.out.println(one.price); //8388.0
        System.out.println(one.color); //黑色
        one.call("乔布斯");  //给乔布斯打电话
        one.sendMessage();  //群发短信
        System.out.println("==================");

        Phone two = new Phone();
        System.out.println(two.brand); //null
        System.out.println(two.price); //0.0
        System.out.println(two.color); //null
        two.brand = "三星";
        two.price = 5999.0;
        two.color = "蓝色";
        System.out.println(two.brand); //三星
        System.out.println(two.price); //5999.0
        System.out.println(two.color); //蓝色
        two.call("欧巴");  //给欧巴打电话
        two.sendMessage();  //群发短信
    }
}
D:\Java\jdk-17\bin\java.exe "-javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2022.2.3\lib\idea_rt.jar=10771:D:\BaiduNetdiskDownload\IntelliJ IDEA 2022.2.3\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\JavaSenior\out\production\variableandoperator Demo02PhoneTwo
null
0.0
null
苹果
8388.0
黑色
给乔布斯打电话
群发短信
==================
null
0.0
null
三星
5999.0
蓝色
给欧巴打电话
群发短信

Process finished with exit code 0

 两个引用指向同一个对象的内存图

public class Phone {
    String brand; //品牌
    double price; //价格
    String color; //颜色

    public void call(String who) {
        System.out.println("给" + who + "打电话");
    }

    public void sendMessage() {
        System.out.println("群发短信");
    }
}

class Demo03PhoneSame {
    public static void main(String[] args) {
        Phone one = new Phone();
        System.out.println(one.brand); //null
        System.out.println(one.price); //0.0
        System.out.println(one.color); //null
        one.brand = "苹果";
        one.price = 8388.0;
        one.color = "黑色";
        System.out.println(one.brand); //苹果
        System.out.println(one.price); //8388.0
        System.out.println(one.color); //黑色
        one.call("乔布斯");  //给乔布斯打电话
        one.sendMessage();  //群发短信
        System.out.println("==================");

        Phone two = one;
        System.out.println(two.brand); //苹果
        System.out.println(two.price); //8388.0
        System.out.println(two.color); //黑色
        two.brand = "三星";
        two.price = 5999.0;
        two.color = "蓝色";
        System.out.println(two.brand); //三星
        System.out.println(two.price); //5999.0
        System.out.println(two.color); //蓝色
        two.call("欧巴");  //给欧巴打电话
        two.sendMessage();  //群发短信
    }
}
D:\Java\jdk-17\bin\java.exe "-javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2022.2.3\lib\idea_rt.jar=11799:D:\BaiduNetdiskDownload\IntelliJ IDEA 2022.2.3\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\JavaSenior\out\production\variableandoperator Demo03PhoneSame
null
0.0
null
苹果
8388.0
黑色
给乔布斯打电话
群发短信
==================
苹果
8388.0
黑色
三星
5999.0
蓝色
给欧巴打电话
群发短信

Process finished with exit code 0

 

 

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值