• Java基础15 内存分析和面向对象


    一、内存分析

    java内存:

    存放new的对象和数组
    可以被所有的线程共享,不会存放别的对象引用

    存放基本变量类型(包含这个基本类型的具体数值)
    引用对象的变量(会存放这个引用在堆里面的具体地址)
    方法区
    可以被所有线程共享
    包含了所有class和static变量

    二、数组的基本特点

    数组分静态和动态两种创建方式
    数组的四个特点:
    长度是确定的,一旦创建大小不可以改变
    元素类型必须相同
    元素可以是任何数据类型,包括基本类型和引用类型
    数组变量属于引用类型,可以看成是对象,每个元素相当于是成员变量,
    数组对象本身也在堆中

    三、Arrays类

    常用功能:
    fill 给数组赋值
    sort 给数组排序
    equals 比较数组中的元素值是否相等
    binarySearch 查找数组元素,用二分查找法

    四、类的构造器

    必须和类的名字相同
    必须没有返回类型,也不能写void

    五、封装

    为了追求 高内聚 低耦合
    属性私有 get set

    六、继承

    继承的本质是对某一批类的抽象,为了实现更好的建模。
    extends是拓展的意思,子类就是父类的拓展
    java中只有单继承,没有多继承

    继承是java中类与类的一种关系,除此以外还有依赖、组合、聚合等
    子类继承父类,子类就拥有父类所有的方法 (public)
    java中所有的类 都默认直接或间接继承Object

    七、this和super关键字

    this代表当前类
    super代表父类
    super注意点:
    super调用父类的构造方法
    super必须只能出现在子类的方法或者构造方法中
    super和this不能同时调用构造方法
    super和this的区别:
    代表的对象不同
    前提
    this没有继承也可以使用
    super只能在继承条件下才可以使用”
    构造方法
    this()本类的构造方法
    super()父类的构造方法

    八、方法重写

    @override 重写 有功能的注释
    注意:
    重写需要有继承,子类重写父类的方法
    方法名必须相同
    参数列表必须相同
    修饰符的范围可以扩大 public>protected>Default>pribate
    抛出的异常 范围可以被缩小 不可以扩大

    九、多态

    父类可以指向子类,但是不可以调用子类独有的方法
    注意:
    多态是方法的多态,属性没有多态
    父类和子类,有联系
    存在条件,继承关系,方法需要重写,父类引用指向子类对象
    static final private方法不可以被重写

    父类引用指向子类对象
    子类转换为父类,向上转型
    父类转换为子类,向下转型 强制转换 可能会丢失一些方法
    方便方法的调用,减少重复的代码,有效提升利用率

    十、instanceof和类型转换

    判断两个类之间是否存在父子关系

    引用类型转换
    低转高 自动就转换
    高转低 强转换

    十一、static关键字

    静态变量 类名.变量 多线程 不需要new
    静态代码块
    static{
    }
    类一加载就执行 只执行一次
    先运行静态方法块,然后运行匿名方法块
    最后执行构造方法

    十二、抽象类

    abstract来修饰类,类就变成一个抽象类
    抽象类可以没有抽象方法,但是有抽象方法的类 一定要声明为抽象类
    抽象类不可以用new来创建对象,要用子类来继承
    抽象方法只有方法的声明,没有方法的实现,留着给子类实现

    子类继承抽象类,就必须要实现抽象类没有实现的抽象方法,否则该子类也要声明为抽象类

    十三、接口类

    声明接口的关键字是interface
    普通类 只有具体的实现
    抽象类 具体的实现和抽象方法都有
    接口 只有抽象类

    接口就是规范,定义的是一组规则,自己无法写方法
    专业的抽象
    类可以通过implements实现接口,接口可以多继承
    作用:
    约束
    定义一些方法,让不同人去实现
    默认方法是public abstract
    所有的常量都是public static final
    接口不能实例化,接口中没有构建方法
    implements可以实现多个接口
    实现接口必须要重写接口中的方法

    十四、内部类

    直接在类里面class定义一个类,即内部类
    成员内部类
    一个java类中可以有多个class类
    但是只能有一个public class
    写在方法里的 是 局部内部类

    还可以写匿名内部类,不需要将实例保存到对象中,直接用
    new A().say()

    十五、异常

    java把异常当做一个对象来处理,并定义一个基类Throwable作为所有异常的超类
    主要异常分为Error和Exception两种
    Error:灾难性
    VirtualMachineError 虚拟机异常
    StackOverFlowError
    OutOfMemoryError
    AWTError 图形界面化异常
    Exception:可以被程序处理
    IOException 输入输出异常
    EOFException
    FileNotFoundException
    RuntiomeException 运行时异常
    ArithmeticException 算术异常
    MissingResourceException 资源丢失异常
    ClassNotFoundException 找不到类异常
    NullPointerException 空指针异常
    IllegalArgumentException 非法参数异常
    ArrayIndexOutOfBoundsException 数组下标越界异常
    UnknowTypeException 未知类型异常

    十六、异常处理

    try
    catch 捕获异常
    finally 无论异常与否都会执行
    throw 抛出异常 一般在方法里面去主动抛出异常
    throws 方法中处理不了异常,则在方法上抛出异常

    在用多重catch捕获异常的时候,最后用catch(Exception)处理可能遗漏的异常
    尽量去处理异常 而不是print
    尽量添加finally去释放占用的资源

    十七、自定义异常

    只需要继承Exception类 就可以自定义异常
    步骤:
    创建自定义异常类
    在方法中通过throw关键字抛出异常
    如果在当前抛出异常的方法中处理异常,用try-catch捕获并处理,否则在方法声明出通过throws指明抛出的异常
    在出现异常方法的调用者中捕获并处理异常

  • 相关阅读:
    【好书推荐】程序是怎样跑起来的
    2021CCPC山东省赛题解BCDFGHM
    2022.8.3 C++——C++类型转换方式1(static_cast)
    Centos6 密钥登陆,解决所选的用户密钥未在远程主机上注册
    第一章:随机过程预备知识
    含文档+PPT+源码等]精品基于SSM的民宿预订管理系统[包运行成功]计算机毕设Java项目源码
    Echarts的legend的特殊图例展示
    可道云teamOS企业网盘实用插件介绍:实时在线流程图编辑与分享,用在线流程图打造数字化工作流程
    RKMPP API安装使用总结
    从HTTP到Tomcat:揭秘Web应用的底层协议与高性能容器
  • 原文地址:https://blog.csdn.net/Wantfly9951/article/details/127600851