-
Java中字符串内容比较必须用equals()而非==,因==比较引用地址;需注意null安全(推荐Objects.equals)、忽略大小写用equalsIgnoreCase()、排序用compareTo()并考虑locale问题。
-
Path类位于java.nio.file包下,通过Paths.get()创建实例,支持字符串或URI路径;2.可处理绝对与相对路径,自动适配不同系统分隔符;3.支持路径拼接(resolve)、解析(getParent、getFileName、getRoot);4.normalize()用于简化含“..”或“.”的路径,equals和startsWith实现路径比较与前缀判断。
-
在Kafka消费者中手动强制分配特定分区(如让每个消费者固定消费唯一分区),可避免再平衡开销、提升处理确定性,但会丧失容错性、监控兼容性和弹性伸缩能力,适用于生产端与消费端严格对齐的特殊场景。
-
Wrapper类用于将基本类型包装为对象,以支持集合、泛型、null值及工具方法;每种基本类型对应首字母大写的包装类;Java5起支持自动装箱/拆箱,但需注意缓存范围(-128~127)和equals比较。
-
在IntelliJIDEA中可添加log快捷模板:Settings>Editor>LiveTemplates>Java>新建模板,缩写log,模板文本为privatestaticfinalLoggerlogger=LoggerFactory.getLogger($CLASS_NAME$.class);,变量CLASS_NAME设为className()并勾选Skipifdefined,作用域选Java:declaration。
-
在Java中,同一try块不能重复捕获相同异常类型,否则编译失败;应合并处理逻辑或按子类型区分,使用多异常捕获语法(如IOException|SQLException)可简化代码并避免重复;同时需遵循“先具体后一般”原则,确保子类异常在父类前被捕获,防止出现不可达的catch块。
-
一个简易Java项目管理工具包含项目与任务管理功能,通过Project、Task和ProjectManager类实现核心逻辑,使用Scanner提供命令行交互,并可选JSON格式进行数据持久化。
-
修改Maven默认本地仓库路径最稳妥的方式是配置settings.xml文件中的<localRepository>元素为绝对路径,并确保目录权限正确,IDE需手动指定该配置文件并重载项目。
-
ServiceLoader.load()找不到实现类的根本原因是其仅识别META-INF/services/下以接口全限定名命名的配置文件,且内容须为无空格、无注释、无多余换行的实现类全限定名;常见错误包括路径未打包、文件名错误、实现类非public、Java9+模块中缺失uses/provides声明或requires/export不足。
-
Java通配符解决泛型不变性问题,分三种:无界(?)用于只读通用操作;上界(?extendsT)支持安全读取T或其子类,适用于“生产者”;下界(?superT)允许写入T或其父类,适用于“消费者”。
-
Java插件化必须用接口而非抽象类,因类加载器隔离下抽象类易引发NoClassDefFoundError,而接口仅约定签名、跨loader安全;宿主应提供纯接口jar,插件编译依赖但运行时由宿主加载;动态加载需设宿主类加载器为parent并正确管理上下文类加载器;实例化时接口必须由宿主加载,否则强转将触发ClassCastException;卸载本质是丢弃ClassLoader引用并确保无残留引用,否则导致内存泄漏。
-
Optional的核心作用是将空值显式化、类型化,强制编译期处理空值场景,切断null传播链,并提升API语义清晰度;它适用于方法返回值,不适用于字段、参数或集合元素。
-
ArrayBlockingQueue是Java中基于数组实现的有界阻塞队列,遵循FIFO原则,容量固定且不支持null元素;其线程安全由ReentrantLock和Condition保证,支持公平性选择;提供add/offer/put和remove/poll/take等方法实现插入、移除与查看操作,其中put和take在队列满或空时会阻塞;示例展示生产者-消费者模型中自动阻塞协作;使用时需注意容量预设、避免null、权衡公平性与性能,适用于多线程数据传递场景。
-
null是引用的空值状态而非对象,Strings=null时s未指向堆中实例,访问s.length()抛NullPointerException;类字段默认null,局部变量未初始化编译报错,解引用时才触发异常。
-
上帝类违反单一职责原则,导致代码难理解、维护成本高、复用困难、测试失效;应按变更原因拆分职责、提取接口抽象、用策略模式解耦、提升可测性与可扩展性。