-
WeakHashMap使用弱引用保存键,当键无外部强引用时可被GC回收,适用于缓存等易导致内存泄漏的场景。其值仍为强引用,需注意避免反向引用造成泄漏。与HashMap类似,但性能略低,因每次访问可能触发无效Entry清理。常用于GUI组件映射、附加元数据、弱监听器等场景,是标准库中开箱即用的弱引用Map实现。
-
Java中Math类不可实例化,因其构造函数为private且被final修饰;所有方法均为static,直接通过Math类名调用,无需new或额外import。
-
reduce方法用于将流元素归约为单个结果,支持求和、拼接等操作。1.无初始值时返回Optional,避免空流异常;2.提供初始值确保非Optional结果,适用于默认值场景;3.并行流专用版本含合并器,保证多线程结果正确合并,需满足结合律。
-
猜数字游戏需用Random.nextInt(100)+1生成1–100内随机数,配合while(true)循环、hasNextInt()校验、trim()和正则\d+判断输入合法性,并分层处理非数字、越界及正确猜测。
-
答案:通过Java的Socket编程和多线程技术实现聊天室,服务器端使用ServerSocket监听端口,为每个客户端创建ClientHandler线程处理消息接收与广播,维护客户端输出流列表实现消息转发,客户端通过输入输出流与服务器通信,分别用独立线程处理消息发送与接收,支持多用户实时群聊,可扩展用户名、私聊等功能。
-
JavaSwing做桌面音乐播放器可行,但需借助javazoom.jl等第三方库解码MP3,因javax.sound.sampled原生不支持;播放必须异步执行以避免EDT阻塞界面。
-
答案:Java积分管理系统通过User类和PointManager类实现用户积分的增减、查询与展示功能,使用HashMap存储数据,支持添加用户、积分操作及信息查看。
-
在Java中,实现线程安全集合的首选方式是使用java.util.concurrent包中的并发集合类。1.ConcurrentHashMap通过分段锁(JDK7及之前)或CAS+synchronized(JDK8及以上)机制提供高并发性能,避免了全局锁带来的性能瓶颈;2.CopyOnWriteArrayList适用于读多写少场景,通过写时复制保证线程安全;3.ConcurrentLinkedQueue和ArrayBlockingQueue分别适用于无界非阻塞和有界阻塞队列需求。相较于HashTable和
-
Java中基本类型与包装类可通过自动装箱拆箱实现转换,如int与Integer;自动装箱允许直接赋值Integernum=100,拆箱则intx=num;推荐使用valueOf()和xxxValue()进行手动转换,避免new和==比较,防止空指针与缓存问题。
-
正确方式是仅添加junit-jupiter依赖,版本推荐5.10.2,配合Surefire3.2.5+插件;需避免JUnit4混用,测试类须public非final,方法publicvoid且加@Test;推荐搭配AssertJ提升断言可读性。
-
接口回调用于点对点异步通信,如网络请求完成通知;事件驱动适用于一对多状态广播,如用户登录事件分发;二者结合可提升系统解耦与响应能力。
-
Java类继承受限于单继承、final类不可继承、构造器不被继承及访问权限限制,确保安全性与设计清晰。
-
单例模式通过私有构造函数、静态实例和公共获取方法确保类唯一实例;双重检查锁定利用volatile和两次判空检查实现线程安全的懒加载,既提升性能又防止指令重排序导致的不完整实例问题。
-
答案:Java中Date表示时间点,Calendar用于日期操作,两者可相互转换并借助SimpleDateFormat格式化,但建议新项目使用java.time包。
-
应优先用Lambda替代匿名内部类,仅在需访问外部类私有字段、需自引用且只用一次时才用newSomeInterface(){...}。