Java入门(二十一)

Java入门(二十一)

在这里插入图片描述

  • 新建一个Pet类
package base.oop.demo04;

public class Pet {
    String name;
    int age;
    public void shout(){
        System.out.println("叫了一声");
    }
}
  • 现在右边pet类存在一个默认的无参构造
    在这里插入图片描述
  • 首先第一步我们要把pet给new出来
package base.oop.demo04;

public class Application {
    public static void main(String[] args) {
        Pet dog = new Pet();
        dog.name = "旺财";
        dog.age = 3;
        dog.shout();
        System.out.println(dog.name);
        System.out.println(dog.age);
    }
}
  • 首先程序运行是需要模板,第一步把Application类的代码信息放进来。
    在这里插入图片描述
  • 那这个类有main方法,常量字符串(常量池专门存放常量)。常量池里面有旺财
    在这里插入图片描述
  • 加载完他了,要执行main方法了。main方法是在栈的最里面的。当他执行完之后,被弹出去了,程序也差不多结束了。
    在这里插入图片描述
  • 给 Pet dog 打一个断点
    在这里插入图片描述
  • 往下一步的时候,他走到了右边的Pet类,那说明他要加载这个类。
    在这里插入图片描述
  • Pet类也有个常量池,常量池也有字。(下面几个图堆栈写反了)
    在这里插入图片描述- Pet这个类new的时候,进入了class Pet,当前name为null,age为0,所以肯定是没值的。
    在这里插入图片描述
  • 那么现在对象的模板加载进来了,那他是不是要生成一个具体的对象dog。当等于dog时,也生成了一个变量。dog在栈里面是一个引用,变量的名字。真正的对象是在堆里面的。通过这个模板去new了一个Pet。shout()是引用了方法区里的shout()
    在这里插入图片描述
  • 下面 dog.name=“旺财” ,他把旺财丢给了name,name才有值
    在这里插入图片描述
  • 所有的值赋完了,这个对象才有这些值,才可以使用。
  • 现在我们再来new 一个 cat ,cat是要指向真实的pet。那cat和dog是两个完全不同的对象了。类是一个模板,new出来的就是一个引用名
    在这里插入图片描述
  • 引用变量的意思是,它本身变量在栈里面是引用变量名,真正指向的是堆中具体的对象,只是通过栈给了他一个名字。本质上还是一样的东西。
  • 静态方法区,就是之前static就在这个地方,就是一开始就和类一起加载的。所有的对象都可以去用到它。
    在这里插入图片描述

小结

  • 类是一个模板,对象是一个具体的实例。
  • 方法的定义和调用
  • 对象的引用—引用类型。引用类型对应基本类型,对象是通过引用来操作的。引用是内存图中栈的那个东西,真实指向的是堆里面的。说白了引用对象就是指向一个地址,真实操作的是堆。
  • 对象的属性,一般叫字段(成员变量),属性默认初始化。数字默认是0,0.0 。char是u0000,布尔值是false,引用类型统统为null。定义为 修饰符 属性类型 属性名 = 属性值。
  • 方法就是定义和调用,避免方法死循环。
  • 对象的创建和使用,必须使用new关键字创造对象,创造对象需要构造器。对象的属性 Person kuangshen = new Person() ,那他有属性 kuangshen.name ,这样可以调对象的属性。对象的方法: kuangshen.sleep();
  • 类中只有静态的属性、动态的行为。说白了就是属性和方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值