-
接口定义“能做什么”,抽象类描述“是什么”;接口支持多实现以组合行为,抽象类仅单继承但可复用代码和状态。
-
定义检查型自定义异常需继承Exception,提供无参、Stringmessage及含上下文(如orderId)的构造方法,字段final并提供getter;运行时异常则继承RuntimeException,须包含message和cause构造方法;throw抛实例,throws声明类型;异常类应实现Serializable,避免不可序列化字段,统一message格式以利日志定位。
-
Java不可变集合指由Collections.unmodifiableXXX()或JDK10+ImmutableCollections生成、运行时抛UnsupportedOperationException的实例;它非只读视图,也不等价线程安全,仅拦截写操作,底层引用仍可被修改。
-
使用Maven初始化Java项目需先安装配置Maven,再通过mvnarchetype:generate命令创建项目,生成标准结构后编辑pom.xml添加依赖,最后用mvncompile、test、package等命令构建项目。
-
Java为基本类型提供包装类以支持对象操作,如Integer、Double等,位于java.lang包中。1.每种基本类型有对应包装类,均继承自Object,可参与面向对象操作。2.JDK5引入自动装箱(基本类型转包装类)与拆箱(反之),简化转换但需防null导致的NullPointerException。3.包装类提供parseInt、valueOf、toString、compareTo等方法,用于解析、转换和比较。4.使用时注意:包装类可能为null,应判空;用equals而非==比较值;-128到1
-
Charset.forName()不抛UnsupportedEncodingException,而是抛IllegalArgumentException;真正抛该异常的是String.getBytes(String)等老式API;JDK7+内置常见编码,但需传标准IANA名称(如"UTF-8"),避免别名或拼写错误。
-
Java对象引用赋值本质是地址复制,即一个引用变量中存储的堆内存地址被复制给另一个引用,使二者指向同一对象实例。例如:MyClassobj1=newMyClass();MyClassobj2=obj1;此时并未创建新对象,也未复制对象数据,仅复制了地址值。因此obj1和obj2共享同一对象,通过任一引用修改对象状态,另一引用可见变化,如obj1.setName("Tom");则obj2.getName()也返回"Tom"。若某引用设为null,仅断开其连接,不影响其他引用;只有当所有引用均断开且对象不可达
-
答案是双击jar文件无法运行因未关联javaw,需手动设置默认打开方式并确保使用"javaw-jar"命令执行,可通过修改注册表或创建批处理脚本解决。
-
断言适用于检测内部程序错误,如私有方法参数非法、控制流异常等,默认关闭,仅开发测试启用。1.用于私有方法参数校验、控制流断言、算法状态验证;2.语法为assertcondition或assertcondition:expression;3.运行时需加-ea参数开启;4.不同于异常,断言属Error类型,不捕获,不可替代公共方法的输入校验。
-
ThreadLocal内存泄漏的根本原因是其内部的ThreadLocalMap中键为弱引用、值为强引用,当ThreadLocal实例被回收后,值仍无法被释放,导致内存泄漏。1.ThreadLocal的每个线程都有一个私有ThreadLocalMap,其中键是ThreadLocal实例的弱引用,值是强引用;2.当外部对ThreadLocal实例的引用消失时,GC会回收该实例,但值仍存在,形成键为null的无效条目;3.若线程为长生命周期(如线程池中的线程),这些无效条目将持续占用内存,最终引发内存泄漏;4.
-
Locale是Java国际化的基石,用于标识用户所属地理文化区域及表达习惯,如日期、货币、数字格式和文字排序规则,不负责翻译且区别于时区与用户偏好源头。
-
finally块确保资源释放,无论异常是否发生;典型用于关闭流、连接等,需注意避免return和异常干扰,推荐优先使用try-with-resources自动管理资源。
-
在Spock单元测试中,可通过连续多个then:块精准验证Mock对象方法的调用顺序和具体参数值,而非仅统计调用次数。
-
在IDEA中一键切换Eclipse快捷键只需在Keymap设置中选择Eclipse预设方案,但部分快捷键如Ctrl+1(快速修复)仍为Alt+Enter且不可更改,Ctrl+Shift+F默认仅格式化选中块,Alt+Shift+R重命名需光标位于可重构元素上,且存在插件冲突、系统快捷键抢占、作用域限制及未点击Apply等常见失效原因。
-
<p>有效的@param必须紧跟方法签名中完全一致的参数名(大小写敏感),@return仅用于有返回值的方法且需与实际类型一致;类说明需用/*/文档注释紧贴声明上方,否则javadoc工具不识别。</p>