类与对象及内存

类与对象

把现实中的事物抽象成类,该类里包含事物的属性或者行为。如把人抽象成一个类,属性有姓名,年龄,性别等等,行为有:吃饭饭,睡觉觉,打豆豆等。

public class People{

 String  name;
 int age;
 String sex;
  public void eat(){System.out.println("吃饭")}
 public void  Sleep(){System.out.println("睡觉")}
}

对象就是类的实例化,实例化之后就可以使用类的方法属性了。

People people =new People ();
people .eat();

当方法的参数是对象时,传递给方法的是一个地址,该地址指向堆中对象。传入后可使用对象的方法

public class use{
void Canshu(People people){  //使用该方法时,先创建people对象
people.eat();
}
}

调用时的内存情况

堆,栈,方法区三个内存模块。方法区存放所要使用的类,栈中运行方法,存放局部变量,基本类型变量,引用变量(通过地址值引用,比如People p =new P eople(),p指向的就是一个地址)。堆中存放成员变量与new 的对象(该对象有地址值)该对象包含类的所有属性和方法(方法通过内存地址调用,即该地址是指向方法区)。
首先,方法区先加载类,栈中运行main方法,把main方法压入栈中(就是进入的意思)然后实例化类,new的对象放入堆中,对象通过地址找到堆中的对象。在main方法中调用 对象.方法()时,先找到该方法,然后压入栈中(需要两次寻址,先找堆中方法,再找方法区中方法。)如下图:
内存状态
黑马侵删。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值