JAVA基础学习笔记(三)

1. 面向对象和面向过程

面向过程

以事务为核心的编程思想,分析出解决问题的步骤,然后用程序按照顺序去实现它,面向过程适合简单的、不需要协作的事务。

面向对象

两者关系

都是解决问题的思维方式,都是代码组织的方式。两者相辅相成,宏观面向对象,微观处理还是面向过程。

什么是对象

内存中是一堆代码块,表示一些相关联的数据

对象和类

类可以看做是对象的模板/抽象。

public class SxStudent {
    //属性定义
    int id;
    String name;
    int age;

    //定义方法
    void study(){
        System.out.println("Study..");
    }

    public static void main(String[] args){
        SxStudent stu = new SxStudent();
        stu.study();
    }
}

面向对象的内存分析

Java虚拟机内存可以分为三个区域:

  • 栈stack
  • 堆heap
  • 方法区method area

1.描述的是方法执行的内存模型,每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)
2.JVM会为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等)
3.栈属于线程私有,不能实现线程间的共享
4.栈的存储特性是“先进后出,后进先出”(子弹夹)
5.栈是由系统自动分配,速度快。栈是一个连续的内存空间。

1.用于存储创建好的对象和数组
2.JVM只有一个堆,被所有线程共享
3.是一个不连续的内存空间,分配灵活,速度慢

方法区

1.JVM只有一个方法区,被所有线程共享
2.方法区实际也是堆,只是用于存储类、常量相关的信息
3.用来存放程序中永远是不变或唯一的内容

面向对象的内存分析
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在一个方法内部定义的变量都存储在栈中,当这个函数运行结束后,其对应的栈就会被回收,此时,在其方法体中定义的变量将不...
    Y了个J阅读 4,463评论 1 14
  • 一:java概述: 1,JDK:Java Development Kit,java的开发和运行环境,java的开发...
    慕容小伟阅读 1,867评论 0 10
  • 整理来自互联网 1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具...
    Ncompass阅读 1,564评论 0 6
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,733评论 0 11
  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 3,788评论 0 11