JavaSE(上)-Day7

本文详细阐述了JavaSE中的类和对象概念,封装的私有属性和getter/setter方法,this关键字的作用,构造方法的使用,标准JavaBean规范,以及对象内存图和基本/引用数据类型的差异。通过实例解释了执行Test类main方法创建User对象的内存过程。
摘要由CSDN通过智能技术生成

类和对象

  1. 类是设计图纸,对象是真正的实例
  2. 定义一个类后,就可以用 类名 对象名 = new 类名();创建一个对象
  3. 通过对象名.属性; 获取属性值, 通过对象名.方法名(…); 执行方法;
  4. 建议类名使用大驼峰命名法,见名知意
  5. 类中可以有很多个class类,但是只能由一个public修饰的class类,且public修饰的类名必须和文件名保持一致
  6. 类中定义的属性完整格式是 修饰符 数据类型 属性名 = 值; 在没有显式赋值时,属性是有默认值的,参考数组的默认值

封装

  1. 封装告诉我们如何正确的设计对象的属性和方法
  2. 对象是谁,就要封装他的数据,提供他的行为方法

private

  1. private是私有访问修饰符
  2. private修饰的成员只可以在本类中被访问
  3. private修饰的成员如果想要外界使用,需要对应的getter,setter方法,用于获取属性和设置属性值
  4. private为封装的对象提高了安全性

this

  1. this可用于区分成员变量和局部变量 this.成员变量是类的属性,局部变量是方法中的变量
  2. 局部变量的优先级高于成员变量

构造方法

  1. 构造方法是在创建对象的时候,由虚拟机调用的,为成员变量初始化赋值
  2. 构造方法在不写的时候,会有一个隐式的无参构造方法
  3. 构造方法一旦显式定义,不会再提供隐式的无参的构造方法,需要显式定义

标准JavaBean

  1. 类名见名知意
  2. 类名的属性用private修饰
  3. 设置对应的getter和setter方法
  4. 定义无参和全参构造方法
  5. 追加其他必要的方法

对象的内存图

  1. JDK8之前,JVM中的堆空间后跟着方法区
  2. JDK8后,JVM中的堆空间后方法区被去掉,设计出一块独立空间元空间,方法区的一部分功能划分给堆,一部分划分给元空间
  3. 字节码文件运行时,会进入元空间运行,临时存储
  4. 元空间会存储字节码文件的信息,包括了成员变量和成员方法

执行Test类main方法生成一个User对象的内存过程

  1. 执行有main方法的Test类,Test.class进入元空间临时存储
  2. main方法进栈执行
  3. User.class进入元空间临时存储
  4. 栈中开辟一个空间,名称为user
  5. 堆中开辟一个空间,拷贝元空间中User.class的成员变量和成员方法的地址
  6. 成员变量先默认初始化,整数为0,字符串为null等
  7. 成员变量然后显示初始化,如果成员变量有直接赋值操作
  8. 最后构造函数初始化成员变量
  9. 完成后,将开辟空间的地址回传给栈中user存储
  10. 打印user,显示的是地址值
  11. user.方法名() 过程是通过地址,向堆中找方法的地址,找到元空间对应的类中的方法,让方法进栈执行,执行完毕出栈
  12. 当main方法结束后,栈中的变量也随之消失,堆中的对象没有任何变量被指向,也会作为垃圾被回收
  13. 定义多个User时,字节码文件只会加载一次

基本数据类型和引用数据类型的区别

  1. 栈中基本数据类型存储的是真正的值,引用数据类型存储的是地址
  2. 基本类型给其他基本类型赋值就是真正的值,引用数据类型给其他引用数据类型赋值是地址,指向同一个堆内存空间

this的内存原理

this表示方法调用者的地址值

成员变量和局部变量区别

不同点成员变量局部变量
定义位置不同方法外类中方法中
内存存储位置不同堆内存栈内存
生命周期不同随对象创建和消失随方法调用创建和消失
初始化不同有默认值无默认值,使用需赋值
作用域整个类方法中有效
  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

自律最差的编程狗

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

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

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

打赏作者

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

抵扣说明:

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

余额充值