java教程技术文章
-
Java初学者开发购物系统应先用控制台实现核心流程:统一用nextLine()处理输入避免换行符残留;商品、购物车、订单类职责分明;购物车用ArrayList+Map管理;结账时复制商品快照;主循环用while+switch控制菜单;完成基础功能后再扩展持久化或界面。337 收藏 -
Java中使用try-with-resources最核心的优势是让资源释放“不用操心但一定发生”,只要资源实现AutoCloseable,JVM就保证其在try块结束时自动关闭,无论正常执行、return或抛异常。439 收藏 -
Connection必须实现AutoCloseable才能用于try-with-resources,旧驱动(如MySQL5.1.x、PostgreSQL42前)仅实现java.sql.Connection而未实现AutoCloseable,导致编译报错;需升级驱动并确保JDK≥7、编译目标设为1.7+。244 收藏 -
标记-清除算法先标记可达对象,再清除未标记对象内存,不移动对象但产生碎片;适用于老年代,现代JVM多作为Mark-Compact或G1的基础阶段。314 收藏 -
ArithmeticException是Java中不强制捕获的运行时异常,仅在int、long等整数类型除零时抛出;float/double除零返回Infinity或NaN;应前置校验分母而非依赖try-catch。374 收藏 -
AtomicStampedReference不自动解决ABA,而是通过版本号使ABA可检测;必须用get(int[])原子获取最新引用与stamp,每次compareAndSet前重读,不可硬编码或缓存stamp,否则CAS因stamp不匹配而失败。128 收藏 -
短路运算符仅在左操作数确定整体结果时跳过右表达式:&&左为false、||左为true时生效;需确保左操作数稳定快速且分布利于提前终止,避免异常、副作用或耗时操作置于左侧。328 收藏 -
groupingBy默认返回HashMap无序,因HashMap不保证遍历顺序;需插入顺序用LinkedHashMap::new,需key排序用TreeMap并指定Comparator。363 收藏 -
WebSocket连接后收不到弹幕,主因是Session被意外关闭;需检查isOpen()、避免异步未发送、禁用轮询改用SimpMessagingTemplate;弹幕时间应服务端归一化为offsetMs;高并发广播改用CopyOnWriteArraySet;XSS防护须后端白名单过滤。478 收藏 -
ArrayList默认容量为0(JDK12+)或10(早期),size()始终为0直到add();add()末尾追加高效,set()需索引<size(),remove()移除元素导致O(n)移动;遍历时修改会抛ConcurrentModificationException。468 收藏 -
G1通过Region机制规避外部碎片:每个Region为独立分配单元,无需物理连续空间;回收以Region为粒度采用复制算法,仅Humongous对象需连续空间,碎片风险被限制在可控范围内。242 收藏 -
抽象类的根本意义是解决复用代码与强制规范行为的矛盾,它禁止实例化、允许存状态、提供具体方法并强制子类实现抽象方法。282 收藏 -
Collections.frequency方法用于统计集合中某元素出现次数,需传入非null集合与目标对象,依赖equals判断,适用于List、Set等Collection集合,自定义类需重写equals和hashCode方法。343 收藏 -
局部变量必须显式初始化,因Java不设默认值,编译器直接报错“variablemightnothavebeeninitialized”;作用域以最近的右大括号为准。383 收藏 -
Java中用Inflater解压需先剥离zlib/gzip头部,再调用setInput装填数据,循环inflate直至finished()为true,并务必调用end()释放资源,否则易致内存泄漏。138 收藏