一共有两个类,一个是Test类,主要是声明成员变量的属性和创建成员方法的
第二个是TestA,主要是用来调取成员变量,并为变量进行赋值,以及方法的调用,同时也会详细讲解类和变量的栈堆内存的流程图
首先看两个类
/*
*
* 创建一个类,创建一个成员变量和成员方法
*
* */
public class Test {
//创建成员变量属性
String name;
String type;
int age;
//创建成员方法
public void eta(){
System.out.println("这个吃饭的方法");
}
}
public class TestA {
public static void main(String[] args) {
//通过Test类new一个新的对象
Test test = new Test();
test.name="张三";
test.type="人";
test.age=40;
test.eta();//调用Test类中的成员方法
System.out.println("-----------------------------------");
//通过Test类再new一个新的对象
Test test2 = new Test();
test.name="李四";
test.type="人";
test.age=20;
test.eta();//调用Test类中的成员方法
}
}
下面是运行结果:
这个吃饭的方法
-----------------------------------
这个吃饭的方法
- 首先我们一开始声明的成员变量的属性再堆内存中
- 当我们的main方法运行后,我们再栈内存中创建的属性值就会通过0x333的字码连接到堆内存的成员变量,并把栈内存中的数据传输给他,(李四那里有一个0x444,手误打错了,应该也是0x333)
- 传输完成后,我们堆内存中的变量就已经被成功赋值,因为我们一开始还创建了成员方法,我们最终的结果输出也是通过成员方法输出的,所以我们的堆内存的成员方法通过字码0x33与方法区内的方法进行连接(这个方法区知识意义上的方法去,在有些细节处可以忽略,直接说在栈内存快速遍历即可)
- 方法区内的方法接收到之后,就会到栈内存中直接遍历
- 值得注意的是,如果有其他的属性值出现,比如李四,会直接顶替上一个属性,之后重复之后的步骤即可
缓解疲劳