02面向对象基础

  1. 编程思想

面向过程

  • 按步骤实现
  • 适合简单任务,不需要过多协作的事务

面向对象

  • 对象将过程封装,通过对象将事务实现
  • 适合多对象协作的事务

总结

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

本质:内存中的内存块

数据管理的方式

事物的发展总是遵循"量变引起质变"的哲学原则

数据无管理时代

  • 最初的计算机语言只有基本变量,变量之间相互独立

数组管理和企业部门制

  • 将同类型数据放在一起统一管理

对象和企业项目制

  • 以项目为单位,包含不同类型的部门,以对象为单位,包含不同类型的数据和方法
  • 方便管理

对象的模板/抽象/归类

public class Student {
    //属性
    int id;
    String name;
    int age;
    //构造方法
    Student(){}
    //普通方法
    void study(){}
}
  • 一个java文件可以写多个类,但是只有一个public修饰的类
  1. 面向对象的内存分析

java虚拟机的内存可以分为三个区域:栈stack、堆heap、方法区methodArea

栈stack

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

堆heap

  • 堆用于存储创建好的对象和数组(数组也是对象)
  • jvm只有一个堆,被所有线程共享
  • 堆是一个不连续的内存空间,分配灵活,速度慢

方法区(静态区)

  • jvm只有一个方法区,被所有线程共享
  • 方法区实际也是堆,只是用于存储类、常量相关的信息
  • 用来存放程序总永远不变或唯一的内容(类信息【Class对象】、静态变量、字符串常量等)
  1. 构造方法

用于对象的初始化

使用new关键字调用

如果自定义构造器,则编译器不会自动添加构造器

构造方法重载

  1. 垃圾回收机制 Garbage Collection
  • 根据算法发现无用的对象
    • 引用计数法
    • 引用可达法(根搜索算法)
  • 将无用的对象进行注销和内存释放
  • 通用的分代垃圾回收机制
    • 年轻代
    • 年老代
    • 持久代 用于存放静态文件,堆垃圾回收没有显著影响
  • JVM调优和Fall GC
  • 开发中容易造成内存泄漏的操作
    • 创建大量无用对象
    • 静态集合类的使用
    • 各种连接对象(IO流对象、数据库连接对象、网络连接对象)未关闭
    • 监听器的使用
  1. this关键字

创建一个对象

  • 分配对象空间
  • 执行属性值的显示初始化
  • 执行构造方法
  • 返回对象的地址给相关的变量

this是创建好的对象的地址,在类中表示当前类的对象

静态变量和静态方法不能通过this调用,只能通过类调用

  1. static关键字

类变量的生命周期与类相同

  1. 静态初始化块

在类加载的同时加载静态初始化块

  1. 参数传值机制

基本数据类型传值,实际传的是副本

引用数据类型传引用,实际传的是地址

  1. 包机制

java中管理类的重要手段

包名:域名倒着写,再加上模块名称

写项目必须加包,不允许使用默认包(在复杂系统开发过程中会异常)

导入包,import关键字,静态导入

导入包下所有的类,会降低编译速度,不会降低运行速度

  1. 面向对象的三大特征

封装 private

  • 高内聚,低耦合
  • 访问修饰符 private、default、protected、public

继承 extends 类单继承,接口多继承

  • 方法重写 @Override
  • 自动向上转型和强制向下转型
  • instanceof关键字

多态

  • 同一个方法调用,由于对象不同可能会有不同的行为
  1. object类

所有java类的根基类

toString() 默认输出该对象的内存地址,方法可重写

equals() 默认比较对象的内存地址,方法可重写

  1. super关键字

表示父类对象

继承树追溯

  1. final

final修饰的属性不能被继承,值不能被修改

final修饰的方法不能被重写

  1. 数组

相同类型数据的有序集合

每一个数据称作一个元素,每个元素可以通过一个索引(下标从0开始)来访问

数组的声明、赋值、取值、遍历

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雄行天下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值