zoukankan      html  css  js  c++  java
  • this和构造器的内存分析(***)

    this的含义:

    1.区分成员变量和局部变量;

    2.谁调用这个this就指向谁;

     

    public class Person{
    
     private String name;
    
     private int age;
    
     public void setAge(int age){
    
            this.age=age;
    
     }
    
     public int getAge(){
    
      return age;
    
     }
    
     public void eat(){
    
      System.out.println(name+"正在吃饭,他今年"+
    
       age);
    
     }
    
     public static void main(String[] args) {
    
      Person p=new Person();
    
      p.setAge(10);
    
      System.out.println(p.getAge);
    
     }
    
    }
    
     

     

    this的内存分析:

    1.说明: 普通方法和main要入栈内存,堆中存放new的对象。

    2.说明:首先main方法是程序入口,并且它在栈内存中,此时

    Person p就在栈中,而new Person()在堆中,且初始状态下,

    堆中开辟了内存空间,且name=null 、age=0.    此时若这个

    堆内存地址为111,则栈中Person p也有该地址值并指向堆中

    对象new Person()。当执行到“p.setAge(10);”这个方法时,

    this.age=age;<==>p.age=age;并将堆中age=0改为age=10;

    执行到“System.out.println(p.getAge);”这里的时候就直接调

    用了p.age方法,并从堆中获取该值,eat方法分析类似。

          关键点:1.从main开始执行 2.当前对象p调用this,则this

    就等价于p;  3.当普通方法进入到栈中,执行了相应的操作后,

    会在栈中销毁。

     

     

     构造器的内存分析:未完待补充

     

     

     

    成年人的世界没有那么多的童话,也没有那么多的逆袭。
  • 相关阅读:
    常用的网址
    Powerdesigner使用建议(完整版)
    非常实用的钩子程序(c++).
    SQLPlus中的复制和粘贴技巧 http://www.oradb.net/sql/sqlplus_007.htm
    【C#】输出的XML文件中空标签多换行符
    CMD创建当前日期文件夹
    【PostgreSQL】Select取得行号
    職業定義
    【SQLSERVER】CMD执行SQL语句
    【Oracle】PACKAGE输出LOG文件
  • 原文地址:https://www.cnblogs.com/shijinglu2018/p/10052296.html
Copyright © 2011-2022 走看看