-
构造方法重载必须满足:同一类中方法名相同(即类名)、参数列表不同(数量、类型或顺序至少一者不同)、与访问修饰符和返回值无关;本质是通过签名差异实现编译期唯一绑定。
-
不能。finally块仅保证执行,不自动关闭资源;需手动在其中用try-catch分别关闭各资源并判空,避免异常中断清理;Java7+推荐try-with-resources,但老代码仍依赖正确编写的finally。
-
桥接模式通过分离抽象与实现,使两者独立变化,适用于多维度扩展场景。如图形系统中形状与渲染方式、日志系统的输出目标、支付方式与渠道、跨平台GUI绘制等,均可用此模式避免类爆炸,提升灵活性。核心是识别独立变化的维度,用组合代替继承,动态切换实现,降低耦合。但需避免过度设计,仅在多维度独立演化时引入。
-
CopyOnWriteArrayList写操作不阻塞读,因每次修改都新建数组复制内容,读操作持老数组引用且无锁;但写开销大、迭代器不可见新元素、多方法组合非原子。
-
Java分批应优先用subList或GuavaLists.partition,避免Stream.collect硬凑;需注意视图修改风险、空值校验及并发安全。
-
优先用Introspector读POJO属性:它自动过滤静态/合成/桥接方法,兼容isXxx()/getXxx(),但要求类遵循JavaBean规范;getDeclaredField适合绕过封装,需手动处理访问控制、继承及模块限制,且必须判空readMethod并缓存PropertyDescriptor。
-
通过抽象类定义共通行为,如Animal的makeSound;利用接口实现多维能力,如Flyable;结合策略模式动态切换行为,提升灵活性。
-
extends是Java中声明单继承的唯一关键字,格式为class子类名extends父类名,父类不能是final或非public(跨包时),不可多继承,子类继承public/protected成员,构造器需显式调用super(参数)若父类无无参构造。
-
Files.lines()流式读取大文件更简洁且默认UTF-8,但须try-with-resources防句柄泄漏;需处理编码探测、NUL截断、大小写匹配、滑动窗口上下文、正则预编译、行号控制及高亮安全替换。
-
Java中线程分为用户线程和守护线程,主要区别在于JVM退出机制:1.用户线程会阻止JVM退出,只要存在用户线程运行,JVM就继续执行;2.守护线程不阻止JVM退出,当所有用户线程结束后,即使守护线程仍在运行,JVM也会终止;3.新线程默认为用户线程,可通过setDaemon(true)设为守护线程,但必须在start()前调用;4.主线程是用户线程,子线程继承父线程的daemon状态;5.典型场景:用户线程处理业务逻辑,守护线程用于日志监听、资源监控等后台服务任务。
-
IntelliJIDEA线程检查仅识别静态模式,如非线程安全集合迭代+修改、synchronized锁局部变量、Date未保护;需显式标注@Shared或跨方法传递才提示;不报ConcurrentModificationException、锁粒度不当或volatile缺失问题。
-
Java读取Excel最简单方式是用ApachePOI,只需添加poi-ooxml依赖,代码示例可直接读取test.xlsx首行标题和第二行数据。
-
使用PDFBox3.0向PDF添加QR码时,若直接以读取的源文件作为save()的目标路径,会导致PDF结构损坏——根本原因是PDFBox3.0严格禁止“边读边写同一文件”,而旧版2.x对此容忍度较高。
-
Java方法引用是Lambda表达式的简写,有四种形式:对象::实例方法、类名::静态方法、类名::实例方法、类名::new;需严格匹配函数式接口签名,构造引用依赖参数类型选择重载构造器,数组引用等价IntFunction,且不隐藏受检异常。
-
使用Maven或Gradle自动管理依赖可提升Java开发效率,如在pom.xml添加ApacheCommonsLang3依赖,IDE自动下载配置;手动添加JAR包适用于小型项目,在IntelliJIDEA中通过ModuleSettings导入,在Eclipse中通过BuildPath添加;建议统一版本管理、定期查看依赖树、避免混合引入方式以减少冲突;常见问题包括类找不到、版本冲突等,可通过检查类路径、依赖分析和清理缓存解决;合理使用构建工具并规范依赖管理是关键。