-
Java程序需先经javac编译为平台无关的.class字节码,再由JVM严格经历加载、链接(验证/准备/解析)、初始化三阶段后,才反射调用符合签名的publicstaticvoidmain(String[]args)启动执行。
-
Java开发需先配置JDK环境:JAVA_HOME指向JDK根目录,PATH包含$JAVA_HOME/bin;验证用java-version和javac-version;HelloWorld需文件名、类名一致,编译javacHello.java,运行javaHello;依赖用-cp指定jar路径;常见错误包括命令未找到、类名文件名不匹配、NoClassDefFoundError等。
-
Scanner.nextLong()能直接读取long范围内大整数,无需额外处理;但需用hasNextLong()预检、注意超范围抛异常、超长整数应改用BigInteger,并在nextLong()后调用nextLine()清除换行符。
-
IllegalFormatConversionException是Java中String.format()等方法因格式符(如%d)与参数类型不匹配而抛出的运行时异常,例如用%d传String、%f传Integer、%t系列传String等;需严格按Formatter语法匹配类型,优先用%s兜底或启用-Xlint:format编译检查。
-
Integer缓存池可扩容至-128~200000,通过-XX:AutoBoxCacheMax=200000实现;Long等类型缓存不可调,需用ConcurrentHashMap显式代理;验证用JFR或-XX:+PrintClassHistogram,判等必须用equals()。
-
peek()在队列为空时返回null而非抛异常;使用前必须判空,且多线程下无法保证peek()后元素仍存在,LinkedList按FIFO返回首元素,PriorityQueue返回堆顶优先级最高元素,ConcurrentLinkedQueue.peek()不保证实时性。
-
Java中括号默认为捕获组,影响group()索引、性能及替换行为;非捕获组(?:...)不占编号、不存结果、无性能开销;命名捕获组(?<name>...)在Java8+支持,仍占用编号且不可重名。
-
异步日志不能直接降低GC,但能减少GC对业务线程的干扰:剥离日志对象分配、禁用堆栈采集、启用无垃圾模式、优化缓冲区大小、ERROR日志直写磁盘。
-
设计Account类封装账号、姓名、余额属性并提供访问方法;2.使用AccountService类管理账户,基于HashMap实现增删改查操作;3.实现存款、取款功能,校验余额与金额合法性,确保业务逻辑正确执行。
-
本文介绍如何利用OfficeScripts+PowerAutomate实现Excel数据的自动图表生成、截图导出及邮件发送,全程无需人工干预,适用于Java等外部程序输出数据后的端到端可视化交付。
-
JavaStream通过中间操作(如filter、map、sorted、distinct)和终端操作(如collect、forEach、count)实现集合元素的函数式处理,不修改原数据源,每次调用需重新执行。
-
MyBatis批量更新有三种常用方式。1.利用<foreach>动态构建SQL,适用于中小批量数据和复杂更新逻辑,实现简单但受SQL长度限制;2.使用ExecutorType.BATCH模式,适合大批量数据和统一更新逻辑,性能最优但需手动管理SqlSession;3.利用数据库的ONDUPLICATEKEYUPDATE实现UPSERT操作,适用于数据同步和合并场景,依赖数据库特性但不具备跨数据库通用性。选择时应根据数据量、更新逻辑、数据库类型及错误处理需求综合权衡。
-
Java文件未声明package时归入默认包,但会导致命名包无法引用、模块系统不兼容、构建工具支持弱等问题;应始终显式声明非空package。
-
Java构造方法名必须与类名大小写严格一致,无返回类型(包括void),不可在接口、抽象类或枚举中定义;可重载但不可重写;显式定义任一构造后默认无参构造即消失。
-
同步机制的本质是“互斥+内存可见性保障”,通过加锁清空本地缓存、解锁强制刷回主内存来保障可见性、原子性和有序性;synchronized锁对象分别是this、Class对象或指定obj;ReentrantLock需在finally中显式unlock;锁升级由MarkWord状态动态控制,含偏向锁、轻量级锁和重量级锁。