• 内存


    内存分为codesegment、datasegment、stack、heap。


    程序执行过程

    1、操作系统(windows或java虚拟机)把硬盘文件(exe或class文件)加载到代码区(codesegment)。
    2、从main方法开始执行:

      局部变量保存在栈内存stack;

      对象保存在堆内存heap;

      字符串常量在datasegment,静态变量的引用也在datasegment

      方法只有一份,执行的时候才占用内存。同一类的对象共享该类的方法,非静态方法是针对每个对象进行调用。


    this 和 supper,父类对象在子类对象内部


    方法执行过程的内存过程

        public class Person {
            int id;
            int age;
            Person(int _id, int _age) {
                id = _id;
                age = _age;
            }
            public static void main(String[] args) {
                Person tom = new Person(2, 25);
            }
        }

    1、在栈空间创建一个引用类型的变量 tom。

    2、调用Person 类的构造方法,在堆内存创建一个对象。里面有两个成员变量 id 和 age,默认值都为0。并把这个对象的堆内存参考赋值给tom变量。

    3、构造方法执行,变量 _id 和 _age 是方法的形参,是局部变量,在栈空间创建这两个变量。分别把常量2、25赋值给 _id 和 _age。

    4、把 _id 和 _age 的值赋值给堆内存里的 id 和 age。

    5、构造方法执行完毕,变量_id 和 _age清空。

  • 相关阅读:
    ConvertUtils的理解
    mysql存储过程 详细注释
    线程方法
    集合的方法
    StringStringBufferStringBuilder
    Java基础知识点1
    Java基础知识点
    索引+sql优化
    Oracle数据库02
    Oracle数据库01
  • 原文地址:https://www.cnblogs.com/Mike_Chang/p/9812636.html
Copyright © 2020-2023  润新知