1.创建对象内存图
package cn.itcast.oop;
public class PhoneDemo {
public static void main(String[] args) {
Phone p = new Phone();
//给成员变量赋值
p.brand = "小米";
p.price = 1999;
p.color = "红色";
System.out.println(p.brand+"---"+p.price+"---"+p.color);
//调用方法
p.call("风清扬");
p.sendMessage();
p.playGame();
//第二个手机
Phone p2 = new Phone();
//给成员变量赋值
p2.brand = "华为";
p2.price = 1699;
p2.color = "黑色";
System.out.println(p2.brand+"---"+p2.price+"---"+p2.color);
//调用方法
p2.call("令狐冲");
p2.sendMessage();
p2.playGame();
}
}
class Phone{
String brand;//品牌
int price;//价格
String color;//颜色
//打电话
public void call(String name){
System.out.println("给"+name+"打电话");
}
//发短信的方法
public void sendMessage() {
System.out.println("群发短信");
}
//玩游戏的方法
public void playGame() {
System.out.println("玩游戏");
}
}
步骤:
1.加载类的字节码对象,PhoneDemo.class 以及Phone.class-->在方法区的class内容区域
2.main方法进栈,同时开辟一段内存给main方法
3.Phone p-->在堆内存中new一个Phone对象开辟一段内存空间,进行初始化值brand=null;price=0;color=null;
4.赋值给p的属性进行赋值,brand变为小米,price变为1999,color变为灰色,此时的p指向了堆内存中的new Phone()对象
5.调用p.call方法-->进栈执行完程序 出栈,调用p.senMessage方法-->进栈执行完程序 出栈,调用p.playGame方法-->进栈执行完程序 出栈.
6.同理p2指向堆内存中new出来的Phone().... 注:地址不同.
2.静态的理解:
静态变量是存在于方法区中的静态区中,是随着类的加载而加载,是专属于类的,而不是专属于某个单独的对象的,每一个对象都可以共享静态变量.