java:7-2class

本文详细介绍了Java中的类、对象、属性(field/instancevariable)的概念,内存布局,特别是栈、堆和方法区的作用。讨论了创建对象、访问属性的过程,以及类+对象的内存分类机制,以Person类为例,解析了内存分配和初始化过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

7. class(2)

7.6 object内存布局

7.6 属性 field / instance variable

  1. 从概念或叫法上看: 成员变量 = 属性 = field(字段) = instance variable
  2. 属性是类的一个组成部分,一般是基本数据类型,也可是引用类型(对象,数组)。
    比如我们前面定义猫类 的 int age 就 是属性.

7.6 属性instance variable的细节

  1. field的定义语法跟变量相同,示例:访问修饰符 属性类型 属性名;
    这里老师简单的介绍访问修饰符: 控制属性的访问范围
    【有四种访问修饰符 public, proctected, 默认, private ,后面会详讲】
  2. field的定义类型可以为任意类型,包含基本类型或引用类型
  3. field如果不赋值,有默认值,规则和数组一致。

7.7 创建object访问field

  1. 如何创建对象(2种)
    1. 先声明再创建【Cat cat ; //声明对象cat(只声明不会分配空间)。
      cat = new Cat(); //创建】
    2. 直接创建【Cat cat = new Cat();】
  2. 如何访问属性
    1. 基本语法
      object名.field名;
      cat.name ;
      cat.age;
      cat.color;
    2. class和object的内存分配机制(重要!!!) 看这个思考题。
      我们定义一个人类(Person)(包括 名字,年龄)。
Person p1 = new Person();
p1.age = 80;
p1.name = "小明";
Person p2 = p1;
System.out.println(p2.age);
请问p2.age究竟是多少?并画出内存图:
答案:p2.age = 80

请添加图片描述

7.8 class + object的内存分类机制

  • Java内存的结构分析
  1. 栈stack:一般存放基本数据类型(局部变量)
  2. :存放对象(Cat cat, 数组等)
  3. 方法区:常量池(常量,比如字符串),类加载信息
  4. 示意图
  • 创建对象的流程
Person p = new Person(); 
p.name = “jack”;
p.age = 10
  1. 先加载Person类信息(属性和方法信息,只会加载一次)
  2. 在堆中分配空间, 进行默认初始化。
  3. 把地址赋给p,p就指向对象。
  4. 进行指定初始化, 比如 p.name =”jack” p.age = 10
  • 习题分析
    【b= null 意味着b对应的地址=null,它不连接object了。】
    请添加图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值