zoukankan      html  css  js  c++  java
  • JAVA面向对象

     JAVA面向对象

          类和对象

          类:类是对对象的一种抽象描述,也就是说,类其实就是定义对象的一个模板,在这个模板里面充分描述了对象所具有的属性和行为(方法)

        对象:通过类具体创建出来的实体,就是对象,这些对象是可以拿来使用的,一个类可以创建出任意个相同的对象(也就是一对多关系)

    所以,在编写代码时,必须先编写类(Class),然后通过这个Class来创建对象,创建对象使用new关键字(例如:People p = new People())
    类加载器和加载过程、

    我们都知道,当我们编写完一个类以后,需要通过javac编译成成对应的class字节码文件(也就是将java源文件编译成二进制的字节码文件)

    概念:
    当运行一个Java程序的时候,JVM(Java虚拟机)首先要做的事情就是类加载。类加载是通过类加载器(ClassLoader)来完成的。当类加载加载完class文件以后,会对这个class文件创建一个Class对象。Class对象就是在内存中队字节码文件的一个具体描述,以后创建的所有实例,都是由这个Class对象来创建的,每一个class文件对应着一个Class对象,这个Class对象是有JVM创建的。

    1)Java中的类加载器主要分为三类:
         BootClassLoader(启动类加载器,主要是用于加载JRElib文件夹下的jar文件,其中有一个是rt.jar包,这个jar包含了JDK的核心类库。这个类加载器是使用C++语言编写的,所以在Java程序中不能直接使用它,因此这个类加载器是由JVM在启动时创建来使用的。) 

        ExtClassLoader(扩展类加载器,它主要用于加载jrelibext目录下的jar文件,这个目录下是jre的扩展类库)

         AppClassLoader(系统类加载器,它主要用于加载classpath下的class文件以及jar包,通常我们自己编写的类都是由这个加载器来完成的)

    这三个类加载器的加载顺序:
    在加载一个class的时候,是基于双亲委模型来加载的,
    AppClassLoader首先会调用ExtClassLoader来加载,ExtClassLoader又会委托给BootClassLoader来加载,
    当父类加载器不能加载该class的时候,又会让其子类来加载,
    当所有加载器都不能加载这个class文件时,就会引发一个ClassNotFoundException异常,表示无法找到该类文件。
    JVM的内存配置
    JVM在运行时将内存分为三大块:
    1.
    栈是遵循先进后出的原则(先入栈的变量最后才出栈)。
    局部变量都是在栈中分配的,如果变量是基本数据类型,那么这个变量的值一并存放在栈中。如果是引用数据类型,那么在栈中存放的只是一个引用地址,这个地址是只想堆中的对象首地址。

    2.
    只要通过new关键字创建出来的对象,都会分配到堆中,每个对象在堆中都会有一个唯一的地址,这个地址可以被栈中的变量所引用。

    堆中的对象通常存放实例变量,实例变量是随着对象的创建而创建,也随着对象的销毁而销毁,每个实例都有自己的实例变量,他们之间是互不影响的,不会产生共享。

    (注意:在参数传递的过程中,如果参数的类型是基本数据类型,那么传递过去的就是基本数据类型的值,如果参数的类型是引用数据类型,那么传递过去的是一个引用地址的值,这个引用地址同样是指向堆中的同一个对象)

    关于垃圾回收:当堆中的任何一个对象没有引用指向它的时候,这个对象就被视为垃圾对象,JVM会在定期去自动回收它,并释放内存。 
    3.方法区
    方法区中通常用于存放类加载的class信息(字段信息,方法信息,类的信息,接口信息,还包括静态变量,以及常量等等)当这些信息加载到方法区后,jvm就会根据这些信息构建一个Class对象

  • 相关阅读:
    axios拦截器
    Vue路由守卫
    HTML横向滚动条和文本超出显示三个小圆点
    Vue用户名vuex和localStorage双向存储
    javaScript Es6数组与对象的实例方法
    使用vue实现复选框单选多选
    正则表达式常用字符
    jest函数单元测试
    ts中的类
    ts中接口的用法
  • 原文地址:https://www.cnblogs.com/BruningHUA/p/6220895.html
Copyright © 2011-2022 走看看