• JAVA-初步认识-第六章-引用数据类型参数传递图解


    一.

    (本题的修饰事物类和创建对象类是集中在一起的)

    本题涉及到对象,而且是Demo类在里面创造的Demo对象,本类对象?

    本题虽然开头就有int x=3,这样的定义在类中的成员变量,但jvm还是先从主函数进入程序。

    先往栈内存中加载主函数main和局部变量d. (从mian主函数作为入口进入后,先执行Demo d=new Demo(), 接着int x=3.) 接着在堆内存中开辟一个Demo类类型空间。这里创建的对象和类名相同,自然也会引入属性,即成员变量x。这里是四步走,开辟空间,分配地址,默认初始化,变量赋值。还有一点需要注意的是,Demo d = new Demo()这一句话,是先后三步来的,先是运行左边Demo d,接着是右边new Demo(), 最后将两者联系起来。

     

     接着执行d.x=9,d找到自己对应的x,赋值为9,

    接着是show(d); show要进栈,函数都是在栈里面,同时在里面带了创建了自己的变量d。在这里show是功能化函数,还要联系public static void show(Demo d).方法这句话怎么理解呢?show(Demo d)意味着对输入的类类型变量d进行处理,而类类型变量d,之前已经一定,并赋值结束了。这里是对我们最初学习方法时的一些看法,进行了深入。之前的基本数据类型的变量在调用函数时,并没有仔细研究过它的调用过程是怎样的,而且认为定义方法时的输入形参和主函数中的形参名可以不一致,但是在这里看,貌似不行。接着说主函数中的show(d)语句。首先无论是主函数还是功能化函数,都是在栈中开辟空间,show(d)同样是先在栈中开辟了名为show的空间,同时创建了一个局部变量d,功能化函数在定义时,是对输入Demo类类型d变量进行处理,也就是将主函数中已经定义好的d赋值给我们在show中刚创建的d(这就相当于又建立了一个指向,多变量同时指向一个对象实体),然后按照功能化函数中的执行语句,对d进行处理,执行语句就是对实体进行d.x=4的运算。对堆中的Demo类进行x=4的修改,是通过栈中show这条指向线来进行的。紧接着执行return,操作的是弹栈,将show函数出栈。我觉着这里讲述的一切都是底层的东西。(以我之前的理解来看,这里应该是将已经定义好的d送入show中,然后按照show中的执行语句对输入的d进行处理,最后经过return返回值,也有可能不返回。) 

     

      

    (在面向对象这一章中,始终讨论的都是技术,讲述的都是怎么做,没有一个思想的升华。)

    最后一句输出语句,输出的是主函数中的d及其调用的x。

  • 相关阅读:
    Python面试进阶问题,__init__和__new__的区别是什么?
    LeetCode 76,一题教会你面试算法时的思考套路
    LeetCode 75,90%的人想不出最佳解的简单题
    手把手带你入门numpy,从此数据处理不再慌【四】
    一次找出范围内的所有素数,埃式筛法是什么神仙算法?
    机器学习——十大数据挖掘之一的决策树CART算法
    TypeScript环境搭建
    ASP.NET 开源导入导出库Magicodes.IE 完成Excel图片导入导出
    【翻译】.NET 5 Preview 1 发布
    SuperBenchmarker一个用.NET编写的压测工具
  • 原文地址:https://www.cnblogs.com/wsw-bk/p/7638460.html
Copyright © 2020-2023  润新知