2021-11-05

本文介绍了Java中的Object类、equals和toString方法的使用,以及final关键字的作用。讲解了注解的分类及其应用场景,并详细阐述了单例模式的四种实现方式。最后探讨了多态的概念及其在运行时多态的表现。
摘要由CSDN通过智能技术生成

Object

object类时所有类的父类

一个类灭有使用extends关键字明确标识继承关系 ,则默认继承object类(包括数组)

java中的每个类都可以使用object类

equals测试

  • 继承Object中的equals方法时,比较的是两个引用是否指向同一个对象
  • 子类可以通过重写equals方法的形式,海边比较的内容

//注意空指针异常

toString测试

  • 输出对象名时,默认会直接调用类中的toString
  • 继承Object中的toString方法时,输出对象的字符串表示形式:类型信息+@ + 地址信息
  • 子类可以通过重写toString方法的形式,改变输出的内容以及表现形式

final关键字

表示此类不希望被继承

加到方法前,表示不希望此方法被重写 不可修饰构造方法

加变量前,使用之前赋值之后不可修改

修饰类中成员属性,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vG3YdPzy-1636164485256)(C:\Users\YANRONG.LEE\AppData\Roaming\Typora\typora-user-images\image-20211105170908116.png)]

可配合static使用

使用final修饰可以提高性能,但会降低可扩展性

快捷键:Alt+/ 显示提示菜单

注解简介

特殊标记

可以声明在包、类、属性、方法、局部变量、方法参数等的前面,用来对这些元素进行说明、注释

分类

按照运行机制分

  • 源码注解 注解只在源码阶段保留,在编译阶段会被丢弃
  • 编译时注解 注解会在编译时期保留,在加载class文件时会被丢弃
  • 运行时注解 在运行阶段还起做作用,甚至会影响运行逻辑的注解

按照来源划分

  • 来自JDK的注解
  • 来自第三方的注解
  • 我们自己定义的注解

元注解 定义注解的注解

单例模式

要点:

  1. 某个类只能有一个实例
  2. 必须自行创建实例
  3. 必须自行向整个系统提供这个实例

实现:

  1. 只提供私有的构造方法
  2. 含有一个该类的静态私有对象
  3. 提供一个静态的公有方法于创建、获取静态私有对象

代码实现方案:

  • 饿汉式

​ 对象创建过程中实例化

空间换时间 速度快,空间大 线程安全

  • 懒汉式

静态公有方法中实例化

时间换空间

存在线程风险

                       1. 同步锁
                          2. 双重校验所
                          3. 静态内部类
                          4. 枚举

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I2m7aFKa-1636164485260)(C:\Users\YANRONG.LEE\AppData\Roaming\Typora\typora-user-images\image-20211105222148009.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IfQMC6gk-1636164485262)(C:\Users\YANRONG.LEE\AppData\Roaming\Typora\typora-user-images\image-20211105222157332.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KDzkZr8H-1636164485267)(C:\Users\YANRONG.LEE\AppData\Roaming\Typora\typora-user-images\image-20211105222241127.png)]

多态

意味着允许不同类的对象对同一消息做出不同的响应

  • 编译时多态 设计时多态

    ​ 方法重载

  • 运行时多态

    程序运行时动态决定调用哪个方法

必要条件:

  • 满足继承关系
  • 父类引用指向子类对象

向上转型

隐式转型、自动转型–>父类引用指向子类实例

可以调用子类重写父类的方法以及父类派生的方法,无法调用子类独有方法

小类转型为大类

这个数据可以使用Python进行解析和处理。可以按照以下步骤进行: 1. 将数据分割成每个数据项。 ``` data_items = data.split(',') ``` 2. 对于每个数据项,将其按#分割成四个小项,并存储到一个列表中。 ``` data_list = [] for item in data_items: item_list = item.split('#') data_list.append(item_list) ``` 3. 对于每个小项,进行相应的类型转换。 ``` for item in data_list: item[0] = int(item[0]) # 题号转换为整数 item[1] = datetime.datetime.strptime(item[1], '%Y-%m-%d %H:%M:%S') # 时间转换为datetime类型 if item[2] != '': # 操作类型转换为整数 item[2] = int(item[2]) item[3] = str(item[3]) # 科目转换为字符串类型 ``` 4. 可以按照需要对数据进行进一步处理,如按照题号、时间等进行排序、筛选等操作。 完整的Python代码如下: ``` import datetime data = '''1#2021-05-18 14:31:55##初级会计实务,2#2021-05-18 14:31:57#12#初级会计实务,2#2021-05-18 14:32:08##初级会计实务,3#2021-05-18 14:32:09#12#初级会计实务,4#2021-05-18 14:32:34#12#初级会计实务,4#2021-05-18 14:32:45##初级会计实务,5#2021-05-18 14:32:46#12#初级会计实务,5#2021-05-18 14:32:57##初级会计实务,6#2021-05-18 14:33:00#12#初级会计实务,7#2021-05-18 14:33:44#12#初级会计实务,7#2021-05-18 14:34:42##初级会计实务,8#2021-05-18 14:34:43#12''' # 将数据分割成每个数据项 data_items = data.split(',') # 对于每个数据项,将其按#分割成四个小项,并存储到一个列表中 data_list = [] for item in data_items: item_list = item.split('#') data_list.append(item_list) # 对于每个小项,进行相应的类型转换 for item in data_list: item[0] = int(item[0]) # 题号转换为整数 item[1] = datetime.datetime.strptime(item[1], '%Y-%m-%d %H:%M:%S') # 时间转换为datetime类型 if item[2] != '': # 操作类型转换为整数 item[2] = int(item[2]) item[3] = str(item[3]) # 科目转换为字符串类型 print(data_list) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值