zoukankan      html  css  js  c++  java
  • 1.4(java学习笔记) 面向对象内存分析

     

    首先介绍几个概念

    栈:

    1.栈是方法执行的内存模型,每调用一个方法都会创建一个栈帧。

    2.jvm为每个线程创建一个栈,存放方法相关信息,栈属于线程私有不共享。

    3.栈由系统自动分配,是连续的内存空间,速度快。

    4.栈的特点是先进后出。

    堆:

    1.堆用于存放创建好的对象。

    2.jvm只有一个堆被所有线程共享

    3.堆是不连续的内存空间,但由于不连续分配灵活。

    静态区:

    1.静态区只有一个被所有线程共享。

    2.静态区其实也是堆,用来存放常量,类等不变的信息。

    以下列代码为例:

    有些部分忽略了,只是简述下过程,理解错误之处还望指出。

    1 public class Student {  //首先构造了一个学生类,里面包含一些基本信息(姓名,学生所使用电脑信息)
     2     String name;
     3     Computer user_computer;
     4     
     5     void study(){       //还有学生学习(学习的方法中又包含一个电脑的对象)和玩耍的方法
     6         System.out.println("我在学习" + user_computer.brand);
     7     }
     8     void play(){
     9         System.out.println("我在玩耍");
    10     }
    11     
    12     public static void main(String[] args){
    13         Student stu_huangChangfan = new Student();//首先根据学生类这个模板创建一个具体的对象
                                                         //huangChangfan这个对象中包含姓名,使用电脑品牌基本属性
    14         Computer comput = new Computer();         //以及玩耍和学习的方法(学习方法中又包含一个电脑对象)
                                                         //这时需要创建一个电脑对象,并对其赋值。
    15         comput.brand = "联想";                     //对新建的对象赋值
    16         stu_huangChangfan.user_computer = comput; //电脑对象有了具体的信息后赋给学生对象中的电脑对象。
    17         stu_huangChangfan.study();                //调用学生对象中方法。
    18         stu_huangChangfan.play();
    19     }
    20 }
    21     
    22 class Computer{  //电脑类,其中包含电脑品牌等信息。
    23     String brand;
    24 }

    下面用一个自己做的小视频结合代码理解。

  • 相关阅读:
    python 列表 list
    2019书单
    2020书单
    python 字符串
    python 运算符 取余 取商 in not in
    jmeter——安装和运行
    python——CGI编程【 python脚本在Apache上运行前的注意事项】
    python——CGI编程【Apache 支持 python脚本所需要的配置】
    whistle——真机移动端页面调试【在页面注入js实现模拟PC浏览器的Console功能】
    whistle——真机移动端页面调试【查看、修改真机端的页面DOM结构及样式】
  • 原文地址:https://www.cnblogs.com/huang-changfan/p/9304500.html
Copyright © 2011-2022 走看看