-
答案:Java中常用System.out.printf()和String.format()格式化字符串,支持%s、%d、%f等占位符,可控制宽度对齐如%10s、%.2f,推荐用%n换行,代码更清晰安全。
-
悲观锁假设冲突频繁发生,通过synchronized、ReentrantLock或数据库行锁实现,适合写多场景;乐观锁假设冲突少,采用版本号或CAS机制,适用于读多写少场景,提升并发性能。
-
computeIfAbsent适用于key不存在时按需初始化并缓存结果,如为新key自动创建ArrayList;不适用于覆盖已有key的值,此时应使用put或compute;其lambda不可抛受检异常,否则需包装为RuntimeException,且若抛异常会直接向外抛出。
-
Java单行注释用//,从//到行末;多行注释用/.../,不支持嵌套和半行续写;文档注释/*.../供javadoc使用;注释内字符串不受影响,但字符常量中误写/*会编译失败。
-
String.intern()返回常量池中已存在字符串的引用,内容相同即复用;若不存在则将当前字符串内容放入池并返回其引用,与是否为字面量无关。
-
对象初始化流程为:类加载时执行静态成员(父到子),实例化时先默认初始化字段,再执行实例块和构造器(父到子)。
-
Java中整数和浮点数运算的异同点是:相同点为加、减、乘运算符在两类数据上行为一致,均遵循常规算术规则;不同点主要体现在除法和精度处理上,1.整数除法会截断小数部分,结果为整数,而浮点数除法保留小数;2.浮点数运算可能存在精度丢失,需用BigDecimal保证精确计算;3.混合类型运算时整数会自动提升为浮点数,结果为浮点类型;4.整数除以零抛出ArithmeticException,而浮点数除以零返回Infinity或NaN;5.运算符优先级遵循乘除高于加减,括号可改变执行顺序,提升代码可读性与正确性。
-
答案:在JavaGUI编程中,Swing和JavaFX的UI更新必须在专用线程(如EDT或JavaFXApplicationThread)中执行,直接在普通线程修改UI会导致线程安全问题;应使用SwingUtilities.invokeLater()或SwingWorker等机制确保UI操作在正确线程执行,从而避免界面卡顿、异常或数据不一致。
-
Java命名规范是协作与工具兼容的基石:类名用PascalCase,方法变量用camelCase,常量用UPPER_SNAKE_CASE,布尔方法必须isXxx(),包名全小写+域名倒序,缩写需明确,否则引发可读性下降、工具推断错误及运行时绑定失败。
-
Java异常国际化核心是分离消息键与文案,异常仅持key(如user.not.found),文案由messages.properties等资源文件按Locale动态加载,结合ResourceBundle与MessageFormat实现延迟解析,并可通过Spring的ResourceBundleMessageSource简化集成。
-
用isEmpty()判空最安全,但需先判null;Map同理;避免size()==0和keySet().isEmpty()等冗余写法;外部来源集合要区分null与空集合语义。
-
Runnable描述“要做什么”,Thread负责“用什么去执行”;Runnable无start()方法,仅Thread可启动线程并回调其run();推荐优先使用Runnable以避免单继承限制、支持复用与线程池。
-
DelayQueue是Java中基于优先级队列实现的无界阻塞队列,用于存放Delayed对象,按延迟时间排序,仅当延迟到期后才能取出,适用于定时任务、缓存过期等场景。
-
抽象类用abstract修饰,不能实例化,用于定义通用结构和行为,子类必须实现其抽象方法;可含构造器、字段、普通方法等,适合“is-a”关系和共享代码场景。
-
商品类必须实现Comparable接口或提供Comparator,价格字段必须用BigDecimal,多条件排序用Comparator.comparing()链式调用,TreeSet去重需谨慎以防误删同价不同品商品。