当前位置: 首页 > news >正文

挑战Java面试题复习第5天,无人扶我青云志

挑战第 5 天

  • java反射
  • List Set Map 区别
  • Object 常用方法

java反射

  1. 定义:
  • 运行时动态获取类信息和调用方法的特性。
  1. 应用场景:
  • JDBC数据库连接。
  • 框架如Hibernate和Struts等。
  1. 实现方式:
  • 通过四种方法获取Class对象:
    1. Class.forName(“类的路径”)
    2. 类名.class
    3. 对象名.getClass()
    4. 基本类型的包装类通过Type属性获取Class对象。
  1. 核心类:
  • Class:获取类和接口信息。
  • Field:获取属性信息和动态访问权限。
  • Constructor:获取构造方法信息和访问权限。
  • Method:获取方法信息。
  1. 优缺点:
  • 优点:
    1. 运行时动态获取实例,提高灵活性。
    2. 可与动态编译结合。
  • 缺点:
    1. 性能较低,因为需要解析字节码。
    2. 破坏封装性,可以访问私有方法和属性。
  1. 性能优化方案:
  • 使用setAccessible(true)关闭安全检查。
  • 缓存Class对象以加快多次实例化速度。
  • 使用ReflectASM工具类通过字节码生成加速反射。

List Set Map 区别

  1. List:
  • 存储元素的顺序是有序的。
  • 可以包含重复的元素。
  • 允许元素引用相同的对象。
  1. Set:
  • 不允许重复元素。
  • 元素自动去重,不会有多个元素引用相同的对象。
  • 无序的,但某些实现如LinkedHashSet和TreeSet可以保持元素的插入顺序或自然排序顺序。
  1. Map:
  • 使用键值对存储数据。
  • 每个键最多只能映射到一个值。
  • 键不能重复,但值可以重复。
  • 键通常使用String类型,但也可以使用任何对象。
  • Map不保证元素的顺序,但某些实现如LinkedHashMap可以保持插入顺序。

Object 常用方法

  1. clone方法:
  • 保护方法,用于实现对象的浅复制。
  • 只有实现了Cloneable接口的类才能调用此方法,否则会抛出CloneNotSupportedException。
  • 实现深拷贝需要成员变量也为引用类型并实现Cloneable,同时重写clone方法。
  1. finalize方法:
  • 与垃圾收集器相关,用于判断对象是否可以被回收。
  • 当对象即将被垃圾回收器回收时,由垃圾回收器调用此方法。
  1. equals方法:
  • 用于比较对象的等价性。
  • 默认行为与==相同,即比较对象的内存地址,通常需要在子类中重写。
  1. hashCode方法:
  • 用于哈希查找,通常在重写equals方法时也需要重写此方法。
  • JDK 1.6和1.7默认返回随机数,而JDK 1.8使用Marsaglia’s xorshift scheme算法生成随机数。
  1. wait方法:
  • 与synchronized关键字配合使用,使当前线程等待对象的锁。
  • 可以无限期等待或设置超时时间。
  • 等待期间,线程进入睡眠状态,直到被通知、被中断或超时。
  1. notify方法:
  • 与synchronized关键字配合使用,唤醒在此对象上等待的单个线程。
  1. notifyAll方法:
  • 与synchronized关键字配合使用,唤醒在此对象上等待的所有线程。
  1. toString和getClass方法:
  • toString方法用于返回对象的字符串表示,通常需要在子类中重写。
  • getClass方法用于获取对象的运行时类信息,通常不需要讨论。
http://www.lryc.cn/news/474784.html

相关文章:

  • 大规模语言模型:从理论到实践(1)
  • C#如何锁定和解除鼠标及键盘BlockInput
  • Stable Diffusion 3.5发布:图像生成新纪元,多模态AI的突破!
  • MySQL超大分页怎么优化处理?limit 1000000,10 和 limit 10区别?覆盖索引、面试题
  • RabbitMQ 实现消息队列负载均衡
  • 嵌入式linux中HTTP协议原理基本分析
  • thinkphp和vue基于Workerman搭建Websocket服务实现用户实时聊天,完整前后端源码demo及数据表sql
  • 浅谈射频应用
  • SAP(PP生产制造)拆解工单业务处理
  • 《Python游戏编程入门》注-第4章2
  • deque
  • YOLOv11改进策略【卷积层】| CVPR-2020 Strip Pooling 空间池化模块 处理不规则形状的对象 含二次创新
  • yt-dlp下载视频
  • oracle insert忽略主键冲突,忽略重复记录
  • 小新学习k8s第四天之发布管理
  • 01_IAR新建CC2530工程
  • 原生鸿蒙的竞争力到底如何?
  • 数字化生态平台:关键功能全解析
  • c 到 c++ 过渡
  • [linux驱动开发--环境搭建] qemu-9.1+linux-kernel-6.11
  • 019集——获取CAD图中多个实体的包围盒(CAD—C#二次开发入门)
  • 【Clickhouse 探秘】Clikchouse 有哪些表引擎?你都知道哪些?
  • 你好,C++并发世界
  • windows10 安装 达梦数据库DM8
  • ntp交叉编译 ntpdate时间同步
  • 微服务实战系列之玩转Docker(十六)
  • Solana 代币 2022 — Transfer Hook
  • 网络爬虫中的反爬虫技术:突破限制,获取数据
  • 【ROS2】cv_bridge:ROS图像消息和OpenCV的cv::Mat格式转换库
  • 【Web.路由】——URL生成