首页 > 编程语言 >挑战Java面试题复习第5天,无人扶我青云志

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

时间:2024-11-01 20:47:14浏览次数:3  
标签:面试题 Java 青云 对象 重写 元素 获取 方法 Class

挑战第 5 天

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方法用于获取对象的运行时类信息,通常不需要讨论。

标签:面试题,Java,青云,对象,重写,元素,获取,方法,Class
From: https://blog.csdn.net/Java_stud/article/details/143440663

相关文章

  • 黑马JavaWeb-day04
    @目录mavenmaven简介maven安装IDEA集成maven创建maven项目Maven坐标依赖管理单元测试Web入门Springboot入门HTTP协议三层架构分层解耦\(IOC\&DI\)入门\(IOC\)和\(DI\)详解mavenmaven简介maven:\(Maven\)是\(apache\)旗下的一个开源项目,是一款用于管理和构建\(java\)项目的......
  • Java最核心的优势是什么_1
    在讨论编程语言时,Java的优势毫无疑问是多方面的,包括跨平台兼容性、强大的社区支持、稳定的安全性、丰富的API库、优秀的内存管理。这些特性使Java成为全球数百万开发者首选的编程语言之一。尤其是跨平台兼容性,Java的设计理念是“一次编写,到处运行”,这意味着开发者只需编写一次代......
  • NLP segment-03-基于 TF-IDF 实现关键词提取 java 开源实现
    拓展阅读分词系列专题jieba-fenci01结巴分词原理讲解segmentjieba-fenci02结巴分词原理讲解之数据归一化segmentjieba-fenci03结巴分词与繁简体转换segmentjieba-fenci04结巴分词之词性标注实现思路speechTaggingsegment关键词系列专题NLPsegment-01-聊一聊......
  • 【Java Web】使用JDBC操作数据库(含代码示例)
    文章目录JDBC主要组成部分访问数据库步骤数据库交互StatementPreparedStatementSQL注入攻击演示示例单查询多查询返回记录数JDBC(JavaDatabaseConnectivity)是Java中用于执行SQL语句的标准API,它提供了一种统一的方式来访问各种关系型数据库。JDBC使得开发者能够以......
  • Java期末考试
    填空java之父:JamesGosling开发工具,安装,编译环境----安装JavaSE提供的Java软件开发工具箱——JDK,下载完JDK后,设置系统环境变量。注释:单行//,多行/*  */数据类型包括基本数据类型和引用数据类型。   基本数据类型:逻辑类型(boolean)、整数类型(int,byte,short,long)、浮点类型(fl......
  • JAVA的第一个项目---品牌增删改查的案例
    这几周通过对javaweb的持续学习,终于做出了第一个项目界面比较简单,如下:通过超链接来查询表单的所有内容其下有新增,修改和删除三个按钮新增页面,点击提交增加数据修改页面用到了和新增一样的界面,通过id回显显示选中的品牌删除键进行删除直接回到查询表单界面项目创建分为......
  • 熟练掌握并使用Java的NIO操作
    Java的NewInput/Output(NIO)库是一种非阻塞I/O操作的集合,旨在提高I/O操作的效率。相比于传统的JavaI/O(基于java.io包),NIO提供了更灵活、更强大的I/O处理能力。以下是一篇详细的文章,帮助你彻底熟练掌握并使用Java的NIO操作。一、JavaNIO概述JavaNIO(NewI/O)主要包含以下几个核......
  • 基于java+SpringBoot+Vue的“衣依”服装销售平台设计与实现
    项目运行环境配置:Jdk1.8+Tomcat7.0+Mysql+HBuilderX(Webstorm也行)+Eclispe(IntelliJIDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot+mybatis+Maven+mysql5.7或8.0等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个......
  • 基于java+SpringBoot+Vue的IT技术交流和分享平台设计与实现
    项目运行环境配置:Jdk1.8+Tomcat7.0+Mysql+HBuilderX(Webstorm也行)+Eclispe(IntelliJIDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot+mybatis+Maven+mysql5.7或8.0等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个......
  • javascript 基本语法,变量,运算符【知识点整理】
    JavaScript(ES5)JavaScript的基本语法和变量变量声明与变量赋值的方法:vara=5;vara=5;varb=4;vara=3,b=2;vara,b,c=5;vara=b=c=1;变量的命名规范首字符:英文和下划线组成:英文数字下划线禁忌:关键字、保留字##Unicode在HTML中,Unicode字符......