Java面向对象基础4——内存图

Java面向对象基础——内存图

前言

本文将讲述Java面向对象编程中的内存原理

步骤

  1. 加载class文件
  2. 声明局部变量
  3. 在堆内存中开辟空间
  4. 默认初始化
  5. 显示初始化(仅在定义时有初始值才会有这个步骤)
  6. 构造方法初始化(如果是空参构造就没有这个步骤)
  7. 堆内存中地址值赋值给左边变量

一个对象的内存图——实例

public class Student{
	
	String name;
	int age;
	

	public void study(){
	System.out.println("好好学习,天天向上");
	}
}
public class TestStudent{
	public static void main(String[] args){
	Student s = new Student();
	System.out.println(s.name + " " +s.age);
	s.name = "张三";
	s.age = 20;
	System.out.println(s.name + " " +s.age);
	s.study();
	}
}

在这里插入图片描述

两个对象的内存图——实例

public class Student{
	
	String name;
	int age;
	

	public void study(){
	System.out.println("好好学习,天天向上");
	}
}
public class TestStudent{
	public static void main(String[] args){
	Student s1 = new Student();
	System.out.println(s.name + " " +s.age);
	s.name = "张三";
	s.age = 20;
	System.out.println(s.name + " " +s.age);
	s.study();
	Student s2 = new Student();
	System.out.println(s.name + " " +s.age);
	s.name = "李四";
	s.age = 20;
	System.out.println(s.name + " " +s.age);
	s.study();
	}
}

在这里插入图片描述

两个引用指向同一个对象——实例

与上述两个对象的内存图不同,堆内存只开辟了一个空间,s1和s2都指向那个新开辟的空间,如下图所示
在这里插入图片描述

this关键字储存原理

在这里插入图片描述
在这里插入图片描述

图源自黑马程序员

结语

知道存储原理便于理解方法是如何执行的,在写代码时也能避免一定错误,如果觉得看文字版讲解不够清楚的话,可以点击链接查看有关视频

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alita11101_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值