-
Java类中的成员变量和方法的定义方式分别是:成员变量定义在类中、方法外,通常包含访问修饰符、数据类型和变量名;方法由访问修饰符、返回类型、方法名、参数列表及方法体组成。2.构造方法用于初始化对象状态,其名称必须与类名相同、无返回类型、只能通过new调用一次,不同于普通方法。3.封装性通过私有化成员变量并提供公共getter/setter方法实现,提升了数据安全性、代码维护性和系统模块化程度。
-
Java要求所有局部变量在读取前必须明确赋值;若循环可能不执行(如集合为空),未初始化的布尔变量将导致编译错误。
-
StringBuilder的append方法支持链式调用,是因为所有重载方法均返回StringBuilder类型并执行returnthis;,从而允许连续调用同一实例的多个append方法,且无额外对象开销。
-
需继承Exception或RuntimeException,因所有异常必须是Throwable子类,且编译器强制要求;前者用于必须处理的检查型异常(如IO失败),后者用于无需强制处理的非检查型异常(如业务校验失败)。
-
Java中native方法抛异常需通过JNI函数显式注册,如ThrowNew;抛出后须立即返回且不可ClearException,否则Java层无法捕获或导致JVM崩溃。
-
ExecutorService是Java并发编程核心工具,用于批量执行任务并管理线程生命周期。通过submit()提交任务可获得Future对象,便于获取结果或监控状态,结合List统一管理异步结果;推荐使用Callable返回结果,Runnable用于无返回值任务,调用Future.get()时应设置超时防止阻塞。生产环境建议显式创建ThreadPoolExecutor,合理配置核心线程数、最大线程数、工作队列及拒绝策略,避免Executors工厂方法潜在风险。任务完成后需优雅关闭线程池:先调用shut
-
迁移至JakartaEE不仅是包名从javax.到jakarta.的变更,更是技术栈全面升级,需重构代码、更新依赖、适配新应用服务器,并借助EclipseTransformer或OpenRewrite等工具实现自动化转换,同时确保第三方库兼容性与测试全覆盖,以应对API变化与配置调整,最终实现向云原生、社区驱动的现代化企业级Java平台演进。
-
静态代码块在类加载时执行且仅一次,构造块在new对象时、super()后执行;继承中父类静态块先于子类执行,构造块按父→子顺序插入各构造方法开头。
-
ByteArrayOutputStream不适合拼装复杂二进制协议包,因其扩容被动低效、无法预分配、不支持回填、reset()不真正清空且toByteArray()总返回全量副本。
-
避免过度使用try-catch的核心是区分异常类型、分离控制流与错误处理逻辑;只捕获具体异常(如IOException、JsonProcessingException、SQLException子类),不用Exception/Throwable兜底;禁用异常替代条件判断,应使用nonNull、Optional、containsKey等明确表达意图。
-
Integer.toBinaryString()对负数返回32位补码二进制字符串(如-1→32个1),不带符号位、不补前导零;正数返回最简二进制形式(如5→"101"),0返回"0";需带符号或固定位宽时须手动处理。
-
构建工具(如Maven、Gradle)的配置决定最终字节码版本,IDE设置仅影响语法检查与补全;pom.xml中maven-compiler-plugin的release参数优先于source/target,确保跨JDK编译安全。
-
Arrays.asList()返回固定长度List,不可增删;因其实现类未重写add/remove,调用抛UnsupportedOperationException;基本类型数组会被整体当作单个元素,应改用包装类型或Stream处理。
-
Pattern和Matcher用于Java正则操作:1.Pattern.compile()编译正则;2.matcher()创建Matcher;3.matches()或find()执行匹配;4.group()提取结果。
-
在Java中使用HttpURLConnection设置User-Agent需在connect()前调用setRequestProperty("User-Agent",uaString),推荐使用主流浏览器真实UA字符串,但仅设UA不足以完全模拟浏览器,还需配合其他头部及请求策略。