🔒 25. final vs abstract 关键字
关键字修饰对象作用规则
final禁止被继承final class MyClass { ... }
方法禁止被子类重写public final void func()
变量变为常量(基本类型值不可变,引用类型地址不可变)final int MAX = 100;
abstract必须被继承abstract class Animal { ... }
方法必须被子类重写abstract void eat();

关键区别

final Dog dog = new Dog("欧欧");  
dog.name = "美美";  // ✅ 允许修改对象属性  
dog = new Dog("亚亚"); // ❌ 禁止修改引用地址  

⚖️ 26. final vs finally vs finalize
关键字类别作用示例
final修饰符定义不可变实体(类/方法/变量)final class Immutable { ... }
finally异常处理块确保资源释放(无论是否发生异常)try { ... } finally { conn.close(); }
finalizeObject类方法GC回收对象前调用的清理方法(已废弃)protected void finalize() { /* 清理 */ }

注意

  • Java 9+ 废弃 finalize(),推荐使用 Cleanertry-with-resources
  • finally始终执行(除非 System.exit() 或 JVM 崩溃)

📦 27. java.lang.Object 的六个核心方法
  1. equals(Object obj):对象等价性比较(默认比较地址)
  2. hashCode():返回对象哈希码(需与 equals 逻辑一致)
  3. toString():返回对象字符串表示(默认返回类名@地址)
  4. getClass():获取对象的运行时类
  5. wait()/notify()/notifyAll():线程间通信(需在同步块中使用)
  6. clone():创建并返回对象副本(需实现 Cloneable 接口)

重写规范

@Override  
public boolean equals(Object o) {  if (this == o) return true;  if (o == null || getClass() != o.getClass()) return false;  User user = (User) o;  return Objects.equals(name, user.name);  
}  

🔑 28. 访问权限修饰符对比
修饰符类内部同包不同包子类全局
private
默认
protected
public

类修饰规则

  • 外部类仅支持 public默认
  • 内部类可使用所有修饰符

🏗️ 29. 继承中的构造方法执行顺序
  1. 子类构造隐式调用 super()
    class Parent {  Parent() { System.out.println("Parent构造"); }  
    }  
    class Child extends Parent {  Child() {  // 隐含 super();  System.out.println("Child构造");  }  
    }  
    // 输出:Parent构造 → Child构造  
    
  2. 显式调用父类构造
    Child(int age) {  super(age);  // 必须位于首行  System.out.println("Child带参构造");  
    }  
    
  3. 多级继承顺序
    Object → 爷爷类 → 父类 → 子类

🆚 30. == vs equals()
操作符/方法比较内容示例
==基本类型:值10 == 10 → true
引用类型:内存地址new String("A") == "A" → false
equals()默认同 ==
重写后按业务逻辑"A".equals(new String("A")) → true

重写原则

  • 自反性:x.equals(x) = true
  • 对称性:x.equals(y) = y.equals(x)
  • 传递性:x=y, y=z → x=z

🌀 31. Java多态详解

三大条件

  1. 继承关系(extendsimplements
  2. 子类重写父类方法
  3. 父类引用指向子类对象:Animal dog = new Dog()

转型示例

// 向上转型(自动)  
Animal animal = new Dog();  
animal.eat();  // 调用Dog重写的eat()  // 向下转型(需显式)  
if (animal instanceof Dog) {  Dog dog = (Dog) animal;  dog.bark();  
}  

优势:代码扩展性强(新增子类不影响父类逻辑)


🗑️ 32. 垃圾回收机制(GC)

核心特性

  • 自动管理:JRE 后台回收无用对象(java.lang.Object 未覆盖时)
  • 回收区域:仅堆内存(不包含栈、方法区)
  • 不可预测性:无法精确控制 GC 执行时机

触发时机

  • Eden 区满触发 Minor GC
  • 老年代满触发 Full GC
  • 手动建议:System.gc()(不保证立即执行)

对象复活

protected void finalize() {  this.reference = this; // ❌ 已废弃,禁止使用  
}  

📦 33. 基本类型与包装类
基本类型包装类自动装箱/拆箱
byteByteInteger i = 10; → 装箱
intIntegerint n = i; → 拆箱
doubleDoubleDouble d = 3.14;

转换场景

  1. 集合存储:List<Integer> list = Arrays.asList(1, 2, 3);
  2. 类型转换:int age = Integer.parseInt("25");
  3. 空值处理:Integer score = null;(基本类型不支持 null

🆚 34. Integer vs int
维度intInteger
类型基本类型包装类
默认值0null
内存占用栈存储(4字节)堆存储(对象头+引用)
比较== 比值== 比地址,equals 比值
缓存优化-128~127 缓存(IntegerCache

陷阱

Integer a = 100, b = 100;  
a == b; // true(缓存范围内)  
Integer c = 200, d = 200;  
c == d; // false(超出缓存)  

📅 35. java.util.Date vs java.sql.Date
所属包用途精度
java.util.Datejava.util通用日期时间毫秒级
java.sql.Datejava.sql数据库日期(不含时间)到日(时间置零)

转换示例

// util.Date → sql.Date  
java.util.Date utilDate = new java.util.Date();  
java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());  // sql.Date → util.Date(自动向上转型)  
java.util.Date date = sqlDate;  

📂 36. 递归遍历目录文件
void listFiles(File dir) {  File[] files = dir.listFiles();  if (files == null) return;  for (File file : files) {  if (file.isFile()) {  System.out.println("文件: " + file.getPath());  } else {  System.out.println("目录: " + file.getPath());  listFiles(file); // 递归遍历子目录  }  }  
}  
// 调用: listFiles(new File("D:/Project"));  

优化:使用 Files.walk()(Java 8 NIO)替代递归


37. Java编译输出结果

题目:关于Java编译,下面哪一个正确?
A. Java程序经编译后产生machine code
B. Java程序经编译后会生产byte code
C. Java程序经编译后会产生DLL
D. 以上都不正确
答案:B
解析

  • Java是解释型语言,编译生成字节码(byte code)(.class文件)而非机器码。
  • DLL是C/C++编译的动态链接库,与Java无关。

38. 构造方法(Constructor)规则

题目:下列说法正确的有?
A. class中的construtor不可省略
B. construtor与class同名,但方法不能与class同名
C. construtor在一个对象被new时执行
D. 一个class只能定义一个construtor
答案:C
解析

  • A:类可省略构造方法(系统默认提供无参构造)。
  • B:方法名可与类名相同(不推荐,违反规范)。
  • D:类可定义多个构造方法(重载)。
  • C正确new创建对象时自动执行匹配的构造方法。

39. 接口修饰符

题目:Java中接口的修饰符可以为?
A. private
B. protected
C. final
D. abstract
答案:D
解析

  • 接口默认为abstract(可显式声明,通常省略)。
  • 禁止使用private/protected(仅支持public或默认包访问)。
  • final会阻止接口被实现,违反接口设计目的。

40. 继承中的构造方法执行顺序

题目:以下代码输出什么?

class A {  public A() { System.out.println("A"); }  
}  
class B extends A {  public B() { System.out.println("B"); }  public static void main(String[] args) {  B b = new B();  }  
}  

答案:B(输出AB)
解析

  • 子类构造方法隐式调用父类无参构造
  • 执行顺序:父类构造 → 子类构造。

41. 关键字使用错误

题目:下列关于关键字的使用说法错误的是?
A. abstract不能与final并列修饰同一个类
B. abstract类中可以有private成员
C. abstract方法必须在abstract类中
D. static方法能处理非static属性
答案:D
解析

  • D错误:static方法属于类,无法直接访问非static成员(需通过对象实例)。
  • A:final类禁止继承,abstract类需被继承,冲突。
  • B/C:抽象类可包含private属性和抽象方法。

42. 内存回收机制

题目:下列哪些语句关于内存回收的说法正确?
A. 程序员必须创建一个线程来释放内存
B. 内存回收程序负责释放无用内存
C. 内存回收程序允许程序员直接释放内存
D. 内存回收程序可以在指定时间释放内存
答案:B
解析

  • B正确:GC自动回收无用对象内存。
  • A/C/D:程序员无法控制GC执行(仅能建议System.gc())。

43. 合法标识符

题目:选出合理的标识符?
A. _sysl_111
B. 2 mail
C. $change
D. class
答案:A、C
解析

  • 合法规则
    • 可包含字母、数字、_$
    • 不能以数字开头(B错误)
    • 不能是关键字(D错误,class是关键字)

44. 正确说法

题目:下列说法正确的是?
A. java.lang.Cloneable是类
B. java.lang.Runnable是接口
C. Double对象在java.lang包中
D. Double a=1.0是正确的java语句
答案:B、C、D
解析

  • A:Cloneable是接口(标记接口)。
  • B:Runnable是接口(线程相关)。
  • C:Double包装类在java.lang
  • D:自动装箱(double→Double)。

45. 类声明规则

题目:类名为"MyClass.java"的类可被工程中所有类访问,正确声明为?
A. private class MyClass
B. class MyClass extends Object
C. public class MyClass
D. public class MyClass extends Object
答案:C、D
解析

  • 全局访问需public修饰(A/B默认包访问)。
  • extends Object可省略(所有类默认继承Object)。

46. 面向对象特征及生活案例

题目:面向对象的特征有哪些?举例说明。
答案

  1. 封装
    • 隐藏实现细节,暴露接口。
    • 例:汽车驾驶(无需了解发动机原理,通过方向盘/油门控制)。
  2. 继承
    • 子类复用父类属性和方法。
    • 例:电商系统——User为父类,Customer/Admin子类继承基础属性。
  3. 多态
    • 同一接口不同实现。
    • 例:支付系统——Payment接口,Alipay/WeChatPay实现不同支付逻辑。

47. 内存泄漏 vs 内存溢出

题目:说明内存泄漏和内存溢出的区别及解决方案。
答案

类型内存泄漏(Memory Leak)内存溢出(OOM)
定义对象不再使用但未被GC回收内存不足无法分配新对象
原因长生命周期对象持有短生命周期对象引用内存泄漏积累或数据量过大
检测工具VisualVM、MAT、JProfilerJVM参数-XX:+HeapDumpOnOutOfMemoryError生成堆转储
解决方案- 及时解引用(如List.clear()
- 避免静态集合类滥用
- 使用弱引用(WeakReference
- 增加JVM内存
- 优化数据结构
- 分批次处理数据

48. Java序列化

题目:什么是Java序列化?如何实现?应用场景?
答案

  • 序列化:将对象状态转换为字节流(便于存储/传输)。
  • 实现方式
    public class User implements Serializable {  private String name;  // 无需重写方法(默认序列化)  
    }  
    // 序列化  
    try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("user.dat"))) {  oos.writeObject(user);  
    }  
    
  • 应用场景
    • 分布式系统传输对象(RPC框架如Dubbo)。
    • 缓存对象到硬盘(Redis持久化)。
    • HTTP Session存储(Tomcat会话保存)。

49. 绕过构造方法创建对象

题目:不通过构造函数也能创建对象吗?
答案可以,方式包括:

  1. 反射Class.newInstance()Constructor.newInstance()
  2. 克隆:实现Cloneable接口,调用clone()
  3. 反序列化ObjectInputStream.readObject()

注意:克隆和反序列化不会调用构造方法


50. 匿名内部类的继承与实现

题目:匿名内部类可不可以继承或实现接口?
答案

  • 可继承类
    new Thread() {  @Override  public void run() { /* 重写Thread方法 */ }  
    }.start();  
    
  • 可实现接口
    Runnable r = new Runnable() {  @Override  public void run() { /* 实现Runnable */ }  
    };  
    

限制

  • 匿名内部类不能显式继承和实现同时存在(隐式继承Object)。
  • 无法定义构造方法(需通过实例初始化块{}模拟)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/86800.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/86800.shtml
英文地址,请注明出处:http://en.pswp.cn/web/86800.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小米手机安装charles证书

使用红米手机下载Charles证书一直下载中&#xff0c;无法正常下载。 不使用原装浏览器&#xff0c;使用第三方浏览器下载就可以了。 使用第三方浏览器安装&#xff0c;如我使用的是UC浏览器 使用第三方浏览器安装的证书格式是".pem"格式问卷 将这个文件放入小米的dow…

DeepSeek R2 推迟发布:因 H20 算力短缺

DeepSeek 今年早些时候凭借其 R1 AI 模型备受广泛关注。据《The Information》报道&#xff0c;R2 模型的工作似乎因 H20 处理器而停滞不前。 DeepSeek尚未透露其R2 模型的具体上市时间。 DeepSeek 使用 5 万块 Hopper GPU&#xff08;包括 3 万块 H20、1 万块 H800 和 1 万块…

智能之火,重塑创造:大模型如何点燃新一代开发引擎?

导言&#xff1a;普罗米修斯之火再现 在科技演进的长河中&#xff0c;每一次生产力的跃迁都伴随着工具的质变。从蒸汽机轰鸣到电力普及&#xff0c;再到信息高速公路的铺就&#xff0c;人类驾驭能量的能力不断突破。今天&#xff0c;我们站在一个崭新的临界点上&#xff1a;大语…

一文入门JS

转自个人博客 因为本人经常使用QML&#xff0c;而由于QML与JS之间的关系&#xff0c;本人经常使用到JS相关语法&#xff0c;所以在此系统性对JS基础知识进行总结、记录。 1. 入门 JavaScript&#xff08;简称 JS&#xff09;是一种广泛应用于Web开发的脚本语言&#xff0c;它…

libtool: error: ‘/usr/.local/lib/libgmp.la‘ is not a valid libtool archive

背景&#xff1a; 安装gcc时提示需要vc11&#xff0c;然后安装gcc依赖gmp、mpfr、mpc。 到mpc make时出错&#xff1a; libtool: error: ‘/usr/.local/lib/libgmp.la’ is not a valid libtool archive 详细&#xff1a; /usr/bin/grep: /usr/.local/lib/libgmp.la: No such f…

HDC2025聚焦鸿蒙生态,FairGuard加固方案保驾护航

近日&#xff0c;在2025年华为开发者大会(HDC)上&#xff0c;华为正式启动HarmonyOS 6开发者Beta&#xff0c;并全面展示一年多以来与合作伙伴共建鸿蒙生态的创新成果&#xff1a;“累计有9000多个应用参与了70多个系统级创新体验的联合打造&#xff0c;目前有3万多鸿蒙应用和元…

GAN的思考及应用

一、对文献的思考 CycleGAN的思考&#xff0c;前两周看到了关于CycleGAN的原始论文&#xff0c;是用于处理图像数据&#xff0c;有了如下思考&#xff1a; 1、基础理论与方法 《Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks》是Cycle…

Xcode26新特性与iOS26适配指南

Xcode 26 新特性 在 WWDC25 上 Apple 推出了 Xcode 26,相比较 Xcode 16,它有如下的变化。 项目 安装包更小,其他组件与工具链只有在需要时才会下载。设置界面重新设计,菜单从顶部挪到了左侧,其中 Accounts 改名为 Apple Accounts,Text Editing 改名为 Editing,Key Bind…

闲庭信步使用SV搭建图像测试平台:第二十课——RGB图像转HSV图像

&#xff08;本系列只需要modelsim即可完成数字图像的处理&#xff0c;每个工程都搭建了全自动化的仿真环境&#xff0c;只需要双击文件就可以完成整个的仿真&#xff0c;大大降低了初学者的门槛&#xff01;&#xff01;&#xff01;&#xff01;如需要该系列的工程文件请关注…

Django的CSRF保护机制

一、Django的CSRF保护机制 1. 核心原理 作用&#xff1a;防止跨站请求伪造&#xff08;CSRF&#xff09;攻击&#xff0c;确保表单提交来源可信。实现方式&#xff1a; 在模板中使用{% csrf_token %}生成一个隐藏的<input>字段&#xff08;如csrfmiddlewaretoken&#…

JavaScript中的回调函数详解

JavaScript中的回调函数详解 1.1 概念 1.1.1 什么是回调函数 **回调函数&#xff08;Callback Function&#xff09;**是你将一个函数的引用&#xff08;指针&#xff09;作为参数传递给另一个函数&#xff0c;在那个函数完成任务后调用回来执行你传递的函数。简单的来说就是…

Utils系列之内存池(Fixed size)

内存池核心介绍 废话不多说&#xff0c;show you code. 我实现了两套内存池&#xff0c;一个是固定大小的内存池&#xff0c;一个是多重不同大小的内存池。 Fixed size memory pool 设计思路&#xff1a; 我们一个个看&#xff0c;首先我们定义了一个chunk, chunk 里面包含…

ubuntu安装docker遇到权限问题

问题现象&#xff1a; 使用snap安装的docker&#xff0c;执行docker build命令构建景象时报错&#xff1a; [] Building 0.1s (1/1) FINISHED docker:default > [internal] load build definition from Dockerfile 0.0s > > transferring dockerfile: 2B 0.0s ERROR:…

在Linux系统中部署Java项目

1.在Linux中启动mysql的服务: systemctl start mysql可以采用以下代码查看状态: systemctl status mysql如下图展示绿色代表启动成功 2.之后进入mysql mysql -uroot -p输入自己的密码&#xff0c;这里的密码不会显示,直接输入即可 3.在DG中连接Linux的数据库 4.修改配置文件…

C++洛谷P1002 过河卒

题目 链接&#xff1a;https://www.luogu.com.cn/problem/P1002 解析 这道题适用于了解动态规划的同学。 变量初始化 初始化B点坐标&#xff08;n, m&#xff09;和马的坐标&#xff08;a, b&#xff09; 初始化方向数组和动态规划数组 long long dp[30][30]; int dx[8] …

BlogX项目Go-gin--根据IP获取地理位置

先定义一个函数来判断IP地址是否为内网&#xff0c;归为工具类 // utils/ip/enter.go package ipimport "net"func HasLocalIPAddr(ip string) bool {return HasLocalIP(net.ParseIP(ip)) }// HasLocalIP 检测 IP 地址是否是内网地址 // 通过直接对比ip段范围效率更…

鸿蒙系统(HarmonyOS)应用开发之实现瀑布流图片展示效果

项目概述 科技图库是一款基于鸿蒙系统&#xff08;HarmonyOS&#xff09;开发的高品质图片浏览应用&#xff0c;专注于展示精选科技主题图片。应用采用现代化的瀑布流布局&#xff0c;为用户提供流畅、直观的浏览体验&#xff0c;让科技之美尽收眼底。 主要功能 1. 瀑布流布…

【fish-speech】新模型openaudio-s1-mini尝鲜

一、配置 显卡&#xff1a;v100&#xff08;测试简短语句&#xff0c;显存实际占用不足6G&#xff09; 二、安装测试 1. 安装 1.1 下载源码 git clone https://github.com/fishaudio/fish-speech.git1.2 安装系统组件 apt install portaudio19-dev libsox-dev ffmpeg1.3 …

介绍Windows下的由Sysinternals开发的一些小工具

Sysinternals是一个开发了很多Windows下系统工具的公司&#xff0c;这些工具能极大地提高对Windows系统的深入认知。就像它的名字Sys(tem)internals&#xff0c;深入系统里面。这些工具都放在微软的网站上可以下载到。https://learn.microsoft.com/en-us/sysinternals/ 下载网…

云服务器环境下Linux系统epoll机制与高并发服务器优化实践

在当今云计算时代&#xff0c;云已成为企业部署高并发服务的首选平台。本文将深入探讨Linux系统核心的epoll机制如何赋能云环境下的高并发服务器&#xff0c;解析其底层工作原理与性能优势&#xff0c;并对比传统IO复用模型的差异&#xff0c;帮助开发者构建更高效的云端服务架…