创建对象内存分析
我们先定义一个Application类,并在里面实例化一个dog对象,对属性进行赋值,调用Pet类中shout方法,并输出。
package oop.demo08;
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);
}
}
我们再定义一个Pet类,在里面定义两个属性name与age,定义一个无返回值的方法。
package oop.demo08;
public class Pet {
public String name;
public int age;
public void shout() {
System.out.println("叫了一声");
}
}
内存分析:
1、首先加载Application类,里面有一个main()方法,与一个常量池:旺财。
2、加载main()方法,该方法存在栈中。
3、走到Pet dag = new Pet();进入Pet类。在Pet类中有属性:name、age与shout(),其中name=null;age=0
4、new完后要生成一个具体的对象:dog,该对象存在栈中,也是引用变量名。
5、new Pet();在堆中分配了一块空间,假设地址为:0x0011,而第四步的dog就指向这个地址:0x0011;在这个堆中,有name = null; age = 0; shout()方法,这个方法其实是调用的是第三步中的shout()方法。
6、走到dog.name = “旺财”; dog.age = 3;这里的"旺财"是将一步中的"旺财"给的。这时堆中的name = “旺财”; age = 3;
简单小结类与对象
1、类与对象
类是一个模板:抽象,对象是一个具体的实例。
2、方法
定义与调用。
3、对象的引用
引用类型对应的是基本类型(8种),除了基本类型,其他的都是引用类型。
对象是通过引用来操作的:栈 ------> 堆(地址)
4、属性:字段:Field,也叫成员变量。
默认初始化:
数字:0或者0.0
char: u0000
boolean: false
引用: null
5、属性的定义
修饰符 属性名类型 属性名 = 属性值;
6、对象的创建与使用
必须使用new关键字创造对象,也要有构造器。 Person kuangshen = new Person();
对象的属性:kuangshen.name
对象的方法:kuangshen.sleep();
7、静态的属性
静态的属性:属性
动态的行为:方法
在此说明一下:本人不是托,我的这些总结都是根据哔哩哔哩的up主:遇见狂神说,我是看他的视频学习的,真心推荐这位up主,有兴趣的小伙伴可以去看看!!!