-
异或能原地交换两变量值是因为a^b^b==a,利用交换律、结合律及x^x==0、x^0==x;正确写法为a^=b;b^=a;a^=b,禁用a^=b^=a^=b等未定义行为。304 收藏 -
多态指同一调用因对象不同而表现不同,需继承、重写、父类引用指向子类对象三条件;运行时通过动态绑定确定实际执行方法,静态/私有/final方法和构造器不参与;向上转型安全,向下转型需类型判断;多态提升代码扩展性,如统一参数、集合存储多种子类对象,新增子类无需修改原有逻辑。176 收藏 -
Files.lines()必须用try-with-resources显式关闭,否则文件句柄泄露易致“Toomanyopenfiles”;正确写法是将Stream声明在try括号内,确保异常或正常退出时自动调用close()释放资源。154 收藏 -
关系运算符如==、!=、>等直接返回布尔值,无需额外封装;浮点数应避免直接用==比较,需用容差判断;字符串按Unicode码点逐字符比较;数据库和编程中需注意null、精度及类型隐式转换问题。269 收藏 -
Tomcat是Servlet容器而非Java环境,必须依赖JDK运行;需显式配置JAVA_HOME指向JDK根目录,且不支持JDK7;其优势在于稳定、生态成熟、对传统WAR部署支持完整。308 收藏 -
字符串拼接性能差的根源是对象不可变导致频繁内存分配:Python中+=产生O(N²)开销,应改用list+join;Go推荐strings.Builder(预估容量),Java需显式设置StringBuilder初始容量。298 收藏 -
Java8引入默认方法解决接口演进问题,允许在接口中提供默认实现,避免破坏现有实现类。例如Iterable新增forEach默认方法,使ArrayList等集合无需修改即可使用新功能。333 收藏 -
Optional.filter()用于条件性保留单个值:值存在且满足Predicate时返回原Optional,否则返回empty;它不遍历集合,不改变泛型类型,且在empty时不执行Predicate。494 收藏 -
Java注解是结构化元数据,必须用@Retention指定生命周期、@Target限定作用目标才能生效;缺一不可,否则反射读不到或编译报错。219 收藏 -
Java注解本身不支持直接存储对象实例,但可通过指定Converter类型(Class<?>)并在运行时反射创建其实例,实现灵活的注解驱动类型转换。本文详解实现原理、安全调用方式及最佳实践。130 收藏 -
本文详解如何通过纯递归方式在单链表尾部安全添加节点,重点解决原实现中误改头节点、逻辑错位等典型错误,并提供无额外参数的优雅解决方案。396 收藏 -
没有真正“开箱即用、免部署、纯免费”的Java成品网站——所谓成品多为需编译配置的源码包,所谓免费不等于零运维成本;GitHub上搜spring-boot+admin/blog最靠谱,但需核对启动方式、JDK兼容性及数据库配置。303 收藏 -
ClassGraph扫描注解接口实现类返回空,主因是未显式配置扫描范围、类加载器隔离或未启用enableClassInfo()/enableAnnotationInfo();正确做法是先获取接口ClassInfo,再调用getClassesImplementing()并过滤非抽象非接口类。314 收藏 -
必须用Math.ceil(),因分页需“宁多勿少”:Math.round()和parseInt()会漏页,而Math.ceil()确保余数也占1页;总页数公式为Math.ceil(total/pageSize),需防除零、负数及字符串输入,并校验当前页不越界。209 收藏 -
语法错误:while(i++后缺少右括号和循环体,导致语句不完整。306 收藏