类与对象
把现实中的事物抽象成类,该类里包含事物的属性或者行为。如把人抽象成一个类,属性有姓名,年龄,性别等等,行为有:吃饭饭,睡觉觉,打豆豆等。
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方法中调用 对象.方法()时,先找到该方法,然后压入栈中(需要两次寻址,先找堆中方法,再找方法区中方法。)如下图:
黑马侵删。