java教程技术文章
-
自动装箱拆箱是编译器在int与Integer间隐式转换的机制,提升泛型集合使用便利性,但带来缓存陷阱、空指针和性能开销问题,需谨慎处理判等、空值及Stream链式调用。401 收藏 -
nativeMethodPrefix仅重命名native方法符号,不拦截或增强调用;它只影响后续loadLibrary的符号查找(如查test_Java_com_xxx而非Java_com_xxx),不触发字节码变换、无AOP能力,与JVMTI同名接口易混淆但功能完全不同。371 收藏 -
首先确认安装了JDK而非JRE,然后设置JAVA_HOME指向JDK路径,再将%JAVA_HOME%\bin或$JAVA_HOME/bin加入PATH,最后在新终端验证javac-version输出。208 收藏 -
instanceof是Java中唯一能安全判断对象运行时实际类型的运算符,用于Object或父类/接口引用需确认具体子类时,语法为objectinstanceofType,返回boolean,null时恒为false,不兼容类型编译报错。250 收藏 -
equalsIgnoreCase要求调用对象非null,应将字面量放左边避免NPE;不支持locale-sensitive比较,Unicode特殊字符如é/É可能失败;性能优于toLowerCase+equals,因原生实现且短路优化。377 收藏 -
扩容无需重算hash值,因容量恒为2的幂次方,新索引仅取决于原hash在新增bit位的值;JDK1.8用e.hash&oldCap快速提取该位,0则留原索引,非0则原索引+oldCap。128 收藏 -
里氏替换原则要求子类必须严格遵循父类契约:异常类型不可拓宽、前置条件不可加强、后置条件与不变量不可削弱,且禁止用继承模拟“has-a”关系,否则将导致编译失败或运行时隐性崩溃。356 收藏 -
不可行。jcmd无法动态修改GC日志参数(如-Xlog:gc*、-XX:+PrintGCDetails),因其属启动时静态绑定选项,相关flag均标记为manageable=false,调用VM.set_flag会静默失败且无日志输出。443 收藏 -
本文详解如何使用JavaStreamAPI按title和author两个字段对Book列表进行分组,合并重复项,并将统计数量直接写入每个唯一Book对象的count字段,最终返回去重后的List。440 收藏 -
使用?superT的核心目的是实现“写入友好”,即安全地向集合中添加类型为T或其子类的实例;它表示某未知父类型,允许写入T及其子类对象,但读取时只能视为Object。383 收藏 -
drainTo能减少上下文切换,因为它批量取出任务避免频繁阻塞/唤醒;正确用法需配合循环与非空判断,并处理部分drain和零长度边界;性能提升取决于队列类型与任务密度。286 收藏 -
Java动态代理中InvocationHandler的invoke方法应使用if-else链按方法名分发逻辑,需显式处理Object方法、优先拦截业务方法、兜底调用原方法,并结合参数类型增强判断、提取方法名为常量或枚举、做好null安全与异常处理。173 收藏 -
Javarecord类在DTO场景中天然适配,因其用极简语法自动获得不可变性、结构化语义及正确实现的equals/hashCode/toString,规避传统POJO样板代码与易错点。191 收藏 -
System.console()在IDE中返回null是因缺乏底层TTY支持,仅在系统终端运行jar时有效;readPassword()返回char[]为安全设计,需手动清零;Windows中文路径会导致编码问题;多环境部署应放弃该API,改用适配方案。119 收藏 -
异或交换法利用a^a=0、a^0=a及结合律,通过a^=b;b^=a;a^=b三步完成整数交换,但仅适用于不同地址的整数,不适用于浮点数或同一变量。101 收藏