根据提供的文件内容,我们可以整理出以下关键的Java知识点: ### final、finally、finalize 1. **final**: 这个关键字在Java中具有多种用途。它可以用于变量、方法和类。 - 对于**变量**:一旦一个变量被声明为final,则它的值不能被改变。对于基本类型(如int, double等),这意味着该变量所引用的值不能改变;而对于对象(如String, Integer等),意味着该变量指向的对象不能改变。 - 对于**方法**:如果一个方法被声明为final,那么它不能被子类重写。 - 对于**类**:如果一个类被声明为final,那么这个类不能被继承。 2. **finally**: finally块总是会被执行,无论前面的代码是否抛出了异常。这是用来确保某些清理操作总会被执行的好方法。例如关闭文件或释放资源等。 3. **finalize**: finalize() 方法是Object类的一个方法,在垃圾回收器将对象从内存中清除出去之前调用此方法。但不建议开发者使用此方法来处理资源的释放工作,因为它的执行并不确定。 ### Anonymous Inner Class (匿名内部类) - 匿名内部类是在定义时没有名称的类。它们通常在一个类的方法体内定义,并且只能在这个方法体内使用。 - 匿名内部类可以实现接口或继承已有的类。 - 它们常用于实现简单的监听器接口,如 Swing 框架中的事件监听器。 ### Static Nested Class vs Inner Class - **Nested Class**: Java中可以定义嵌套类,包括静态嵌套类(Static Nested Class)和非静态嵌套类(Inner Class)。这两种嵌套类的主要区别在于静态嵌套类不需要外部类的实例即可创建。 - **Inner Class**: 非静态内部类可以访问外部类的所有成员(包括私有成员),并且必须通过外部类的实例来创建。 - **Static Nested Class**: 静态嵌套类与外部类之间没有依赖关系,类似于普通的类,但可以在外部类的外部直接使用。 ### HashMap vs Hashtable - **HashMap**: 是一个基于哈希表的Map接口实现,存储键值对映射。它允许一个null键和多个null值。 - **Hashtable**: 也是一个实现Map接口的完全线程安全的类。它不允许任何键或值为null。 - 主要区别在于HashMap不是同步的,而Hashtable是同步的,这意味着后者更适合多线程环境。 ### Collection vs Collections - **Collection**: 是Java集合框架的基础接口之一,它是所有集合类的根接口,用于表示一组对象。 - **Collections**: 是Java集合框架中的工具类,提供了一系列静态方法来操作或返回对集合的特定类型的视图。 ### assert断言 - 在Java中,assert语句用于在开发阶段进行程序验证,它可以在编译时启用或禁用。 - 断言语句的基本语法是`assert expression`,其中expression是一个布尔表达式。 - 如果表达式的值为false,则会抛出AssertionError异常。 - 断言主要用于测试目的,可以帮助开发者检测程序中的错误情况。 ### String对象与字符串常量池 - 当使用`new String("xyz")`创建字符串时,会创建一个新的字符串对象,即使字符串池中已经存在相同的字符串也不会重用。 - 字符串常量池是用于存储字符串字面量的区域,它提高了字符串的性能并减少了重复对象的创建。 ### Math.round() 方法 - `Math.round(11.5)`会返回12L(long型),因为对于正数,round()方法会向离整数最接近的方向四舍五入。 - `Math.round(-11.5)`会返回-11L(long型),对于负数也是类似的逻辑。 ### short类型变量赋值与运算 - `short s1 = 1; s1 += 1;`这种情况下,由于+=运算符允许自动类型提升,因此可以直接对short类型的变量进行加法操作而不必显式转换类型。 - `short s1 = 1; s1 = s1 + 1;`这种情况下,s1 + 1的结果默认是int类型,需要显式转换为short类型才能赋值给s1。 ### sleep() 与 wait() - `Thread.sleep()`方法使得当前线程暂停执行指定时间,然后重新获取执行权继续执行。 - `wait()`方法是Object类的一个方法,用于使当前线程等待,直到其他线程唤醒或超时。 ### Set接口与元素比较 - `Set`接口的实现类(如HashSet, TreeSet等)不会包含重复的元素。 - `equals()`方法用于判断两个对象是否相等,通常用于Set接口的实现类中判断元素是否重复。 - 如果两个元素的`equals()`方法返回`true`,则这两个元素被视为相等,Set将不会添加重复的元素。 ### RuntimeException - `RuntimeException`及其子类是运行时异常,通常是由程序错误引起的,例如除零异常(ArithmeticException)、数组存储异常(ArrayStoreException)等。 - 运行时异常不需要在方法签名中声明,但如果程序中出现这类异常,应该适当处理,避免程序崩溃。 以上是根据提供的文档内容总结的关键Java知识点。这些知识点涵盖了Java编程语言的核心概念和技术细节,对于准备Java面试的程序员来说是非常有价值的参考资料。
- 粉丝: 6
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 本科毕设-基于51单片机的步进电机控制+源码+文档说明(高分作品)
- OpenFOAM 前向台阶超音速流动
- 基于Unity DOTS技术的Demo,演示RTS游戏框选功能的制作的思路(源码)
- 这个工具由两个脚本组成,分别用于生成和验证文件的 MD5 校验值,旨在确保文件在传输或存储过程中未被篡改或损坏
- C#ASP.NET小型服装店销售管理系统源码数据库 SQLITE源码类型 WinForm
- 一个爬取爱奇艺影视榜单的python程序(源码)
- 昱感微融合产品 YGW-L2 集成了激光雷达,可见光摄像头,红外摄像头,多传感器融合后生 成时空对齐的多维像素数据,通过 GMSL 接口发出 本品为客户提供更加直接、高效、和可 扩展的环境与事件感知能
- 1、判断是否回文正数 2、两个字符串相加 3、整理课上内容(HTML)
- 判断一个链表是否为回文链表,限制时间复杂度为O(n),空间复杂度为O(1) 如:1->2->2->1 1->2->3->2->1均为回文链表(C源码)
- c++课设,用c++的知识建立一个机房预约系统 分别有三种身份使用该程序,学生代表,教师,管理员