-
String类是Java中处理文本的核心工具,具有不可变性。1.提供equals、equalsIgnoreCase进行字符串比较,startsWith、endsWith判断前后缀,contains检查子串,isEmpty和isBlank判断空或空白内容。2.charAt获取指定位置字符,indexOf和lastIndexOf查找子串位置,substring实现截取操作。3.replace和replaceAll支持字符或正则替换,trim、strip系列方法去除空白,format用于格式化输出。4.spli
-
Properties类是Java中专为字符串键值对持久化设计的轻量级配置工具,适合管理少量、变动不频繁的配置项;它继承自Hashtable,强制key和value为String类型,通过load()/store()与IO流深度绑定,支持自动编码处理、注释和Unicode转义,推荐使用setProperty()、getProperty()和stringPropertyNames()确保类型安全与跨平台兼容。
-
ThreadLocal不能直接new使用,因其值与线程绑定且线程复用时不自动清理,易致数据错乱或内存泄漏;须staticfinal声明、显式remove()、避免存大对象,异步场景推荐TransmittableThreadLocal。
-
能二次开发,但需满足三条件:一是源码完整可编译,含标准Maven/Gradle结构及数据库脚本;二是采用主流可控框架,配置未硬编码;三是授权允许修改,如MIT/Apache-2.0协议。
-
<p>C#12+原生支持逗号分隔case标签,如case1,2,3:;TypeScript和C/C++仅通过模拟或扩展实现类似效果;Go、Java、Python不支持,需用if-else、查找表或显式fall-through替代。</p>
-
Java中数组的length是JVM注入的publicfinal字段而非方法,直接读取内存偏移处整数,零开销不可修改;它不属于Object,不参与继承与反射,仅对数组有效,多维数组中仅表示第一维长度。
-
SqlSessionFactoryBean必须显式指定dataSource,否则多数据源时会因Spring自动注入失败而抛NoUniqueBeanDefinitionException;事务管理器必须为DataSourceTransactionManager且与SqlSessionFactoryBean共享同一DataSource;@MapperScan应扫描Mapper接口包路径;自调用事务方法不生效是因SpringAOP代理机制限制。
-
Instrumentation.removeTransformer用于注销已注册的ClassFileTransformer,使其不再参与后续类加载或重转换。移除后新加载类不再调用该转换器,但已修改字节码不恢复;并发下可能仍有少量调用残留;需传入原对象引用,返回true表示成功移除,false表示未找到或未注册。
-
Java简易问卷系统用内存集合实现“问题—选项—用户回答”链路:Question存题干/题型/选项,Answer存用户ID/题目ID/回答,SurveySystem管理题库、收集答案并统计;支持单/多/简答,输入校验与索引越界防护。
-
LinkedHashMap能保持有序是因为在HashMap基础上额外维护了一个双向链表。默认按插入顺序:put时节点追加到链表尾部;accessOrder=true时按访问顺序:get/put会将节点移至尾部,支持LRU缓存。
-
并发编程核心难点在于可见性、原子性、重排序、竞态条件、中断响应与死锁的综合处理:volatile解决可见性但不保原子性,synchronized和Lock兼顾二者却有开销,CAS类操作需谨慎使用,组合操作须额外同步,中断依赖线程主动响应,死锁源于锁序不一致,而“何时加锁、加多大”才是最易出错的边界问题。
-
Java跨模块事件驱动的核心是通过事件总线实现模块解耦,即发布者发消息、订阅者监听消息,不依赖对方具体实现;事件为POJO,监听器通过注解或接口注册,总线为单例内存注册表,需独立事件模块、明确监听归属、区分同步异步,并避免泛化。
-
线程安全指多线程读写共享数据时结果始终符合预期;count++非原子,因拆为load-add-save三步,易发生竞态;volatile不解决中间插队;synchronized可快速止血;高并发宜用ReentrantLock或AtomicInteger。
-
单一职责原则(SRP)指一个类应仅有一个引起它变化的原因;如Order类应只管订单数据,计算、开票、通知等职责需按变化动因拆分为OrderCalculator、InvoiceGenerator、NotificationService等独立类。
-
Path.getFileName()返回Path对象而非字符串,需调用toString()获取纯文件名;路径为根路径或末尾含分隔符时返回null,须判空;它基于FileSystem规则跨平台解析,优于手动substring,且保留扩展名。