-
NumberFormat.getCurrencyInstance()不支持动态切换货币符号,其显示的货币符号和小数位由Locale默认关联的货币决定;若需按货币代码(如"EUR")动态控制,应使用setCurrency(Currency.getInstance("EUR"))或Java12+的NumberFormatter。
-
StringTable是哈希表,不自动去重,仅通过字面量加载或显式调用intern()才插入条目;intern()在JDK7+存引用而非复制对象,滥用会导致哈希冲突、内存泄漏及性能下降。
-
学生类应私有字段+getter/setter+构造器约束必填项;id用Long/String避免0误判;name校验非空;年级等用enum;集合依查询方式选HashMap(按ID查)或ArrayList(遍历展示);控制台输入统一用nextLine()转类型并校验;增删改查需处理重复、空值、不存在等边界。
-
Calendar.get(WEEK_OF_YEAR)不可靠,因依赖Locale的首日和最小天数;正确做法是锚定日期推算周一/周六;SimpleDateFormat解析会清空时分秒;set后须调getTime()刷新;Java8+推荐用LocalDate+TemporalAdjusters。
-
SocketTimeoutException主要由连接或读取超时引发,需通过try-catch捕获并区分处理;结合重试机制与合理设置超时时间可提升网络通信稳定性与用户体验。
-
JavaServlet是运行在服务器端的Java程序,遵循ServletAPI规范,接收HTTP请求并生成响应。其工作原理基于请求-响应模型,通过Web容器(如Tomcat)接收HTTP请求,封装为HttpServletRequest和HttpServletResponse对象,并调用Servlet的service方法进行处理。Servlet生命周期包含加载与实例化、初始化(init())、服务(service())、销毁(destroy())和卸载五个阶段,由Web容器自动管理。Servlet采用单实例
-
遍历ArrayList时调用remove()会抛ConcurrentModificationException,因其迭代器为fail-fast机制,通过modCount检测非迭代器途径的结构性修改。
-
工厂模式通过封装对象创建过程实现解耦,调用者依赖接口而非具体类,工厂根据需求返回对应实现,新增功能无需修改调用代码,符合开闭原则,提升系统扩展性与维护性。
-
常见原因是用户输入非数字内容(如“95分”或直接回车)而程序用nextInt()强行读取,导致InputMismatchException;应改用nextLine()读整行并用Integer.parseInt()转换,配合try-catch处理,并注意消费换行符。
-
静态变量在类初始化阶段(clinit)才被赋值,而非加载完成时;准备阶段仅分配内存并设默认值,初始化阶段才执行static块和显式赋值,finalstatic编译期常量除外。
-
-XX:MaxGCPauseMillis是G1的软目标而非硬限制,仅在启用-XX:+UseG1GC且堆大小固定(-Xms=-Xmx)时有效;单独设置无效,因它依赖G1预测模型,需历史数据支撑,否则停顿抖动剧烈。
-
JIT即时编译器将运行时频繁执行的热点代码(如高频调用方法或循环体)动态编译为本地机器码以提升性能;它延迟编译,仅对达到阈值的热点代码优化,避免冷代码浪费资源,并在编译中进行内联、逃逸分析等深度优化。
-
Thread.stop()被弃用是因为它强行注入ThreadDeath异常,破坏锁状态与对象一致性,导致中间态暴露和逻辑损坏;安全停止应依赖volatile标志与interrupt()协作退出。
-
LambdaMetafactory不是替代反射的工具,而是将反射调用转化为接近直接调用的高性能桥梁,通过MethodHandle+invokedynamic生成函数式接口实现,绕过安全检查、参数装箱与方法查找,使调用耗时从35.8ns降至2.9–3.2ns。
-
子类中定义与父类同名的成员变量会隐藏父类变量,但两者仍独立存在;通过子类对象访问时默认使用子类变量,如Childc=newChild();System.out.println(c.value)输出20,而((Parent)c).value输出10;可使用super关键字访问被隐藏的父类成员,如super.value;此现象仅适用于成员变量,方法同名则为重写,静态成员同名属于静态隐藏;建议避免同名字段以提升代码可读性。