Java面试题,成员变量以及成员方法的调用,类和对象的关系,程序详细流程,类和对象栈堆的详细解答

一共有两个类,一个是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类中的成员方法
    }
}

下面是运行结果:

这个吃饭的方法
-----------------------------------
这个吃饭的方法

在这里插入图片描述

  1. 首先我们一开始声明的成员变量的属性再堆内存中
  2. 当我们的main方法运行后,我们再栈内存中创建的属性值就会通过0x333的字码连接到堆内存的成员变量,并把栈内存中的数据传输给他,(李四那里有一个0x444,手误打错了,应该也是0x333)
  3. 传输完成后,我们堆内存中的变量就已经被成功赋值,因为我们一开始还创建了成员方法,我们最终的结果输出也是通过成员方法输出的,所以我们的堆内存的成员方法通过字码0x33与方法区内的方法进行连接(这个方法区知识意义上的方法去,在有些细节处可以忽略,直接说在栈内存快速遍历即可)
  4. 方法区内的方法接收到之后,就会到栈内存中直接遍历
  5. 值得注意的是,如果有其他的属性值出现,比如李四,会直接顶替上一个属性,之后重复之后的步骤即可

缓解疲劳
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DNCS高级工程师

你的创作是我打赏的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值