面向对象的内存分析

面向对象和面向过程的总结

  1. 都是解决问题的思维方式,都是代码组织的方式
  2. 解决简单问题可以使用面向过程
  3. 解决复杂问题:宏观上使用面向对象把握,微观处理上仍然是面向过程

面向对象思考方式

遇到复杂问题,先从问题中找名词,然后确立这些名词哪些可以作为类,再根据问题需求确定类的属性和方法,确定类之间的关系.

栈的特点如下:

  1. 栈描述的是方法执行的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)

  2. JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等)

  3. 栈属于线程私有,不能实现线程间的共享!

  4. 栈的存储特性是“先进后出,后进先出”

  5. 栈是由系统自动分配,速度快!栈是一个连续的内存空间!

堆的特点如下:

  1. 堆用于存储创建好的对象和数组(数组也是对象)

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

  3. 堆是一个不连续的内存空间,分配灵活,速度慢!

方法区(又叫静态区)特点如下:

  1. JVM只有一个方法区,被所有线程共享!

  2. 方法区实际也是堆,只是用于存储类、常量相关的信息!

  3. 用来存放程序中永远是不变或唯一的内容。(类信息【Class对象】、静态变量、字符串常量等)

package com.example.demo.Run;

import org.springframework.boot.origin.SystemEnvironmentOrigin;

public class HeStu {
    int id;
    String name;
    int age;

    Computer computer;
    void student(){
        System.out.println("我在认真学习!使用电脑:"+computer);
    }
    void play(){
        System.out.println("我在玩游戏,!玩王者荣耀");
    }
    //构造方法   用于创建这个类的对象,无参的构造方法可以由系统自动创建
    HeStu(){

    }

    public static void main(String[] args) {
        HeStu stu = new HeStu();
        System.out.println(stu);
        stu.id=1001;
        stu.name="hejun";
        stu.age= 18;

        Computer computer = new Computer();
        computer.brand = "lianxiang";
        stu.computer = computer;

        stu.play();
        stu.student();

    }

}

class Computer{
    String brand;

}

 微信公众号:一只Java程序猿

 欢迎点赞关注哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值