-
Java中依赖关系指类在运行时使用另一类(非继承/实现),表现为方法参数、局部变量或new对象;管理方式有手动new、工厂模式和IoC容器;识别依赖看参数、字段、new语句;遵循依赖倒置原则,高层模块应依赖抽象而非具体实现。
-
字符串与数组转换需根据场景选择方法:使用toCharArray()将字符串转字符数组,split()按分隔符拆分为字符串数组,newString(chars)或String.valueOf()将字符数组转字符串,String.join()或StringBuilder将字符串数组合并为字符串。
-
Java菜单驱动程序核心是while循环+switch分支+Scanner输入,需处理异常、校验范围并模块化功能。
-
ArrayList基于动态数组,适合随机访问和读取频繁场景;LinkedList基于双向链表,适合频繁增删操作;日常优先选ArrayList,特定需求如队列用LinkedList。
-
Collections提供排序、查找、修改及视图封装等静态方法:sort支持自然/自定义排序,reverse反转,shuffle随机打乱,rotate循环移位;binarySearch需预排序,max/min/frequency用于极值与频次统计;swap、replaceAll、fill、copy实现元素交换、替换、填充与复制;emptyList/singletonList返回不可变轻量视图,unmodifiableXXX提供只读代理,synchronizedXXX增强线程安全。
-
Java发送HTTP请求主要有HttpURLConnection和HttpClient两种方式:前者适用于JDK低版本且无需额外依赖,后者自JDK11起内置,支持同步异步、HTTP/2,API更简洁现代,推荐新项目使用。
-
DataAccessException是Spring对JPA原生异常的统一包装结果,需通过Spring管理的EntityManagerFactory和事务代理才能触发转换,手动获取EntityManager或显式flush会绕过该机制,导致异常未被正确映射。
-
Java7+multi-catch语法为catch(E1|E2e),要求异常类型互不兼容,变量e为最近公共父类类型且final;等价于多个相同逻辑的单catch,但禁止后续宽泛catch重复捕获。
-
新项目应选用slf4j+logback,而非java.util.logging;因JUL配置僵硬、MDC支持弱、异步难实现,而slf4j+logback灵活高效且生态完善,需确保classpath有且仅有一个绑定实现(如logback-classic)。
-
类的依赖关系指一个类使用另一个类的服务,表现为参数传递、实例创建或调用静态成员,而耦合描述类间依赖程度,高耦合导致修改扩散,低耦合提升模块独立性;为降低耦合,应遵循依赖倒置原则(DIP),使模块依赖抽象接口,里氏替换原则(LSP)确保继承合理,接口隔离原则(ISP)避免臃肿接口,开闭原则(OCP)支持扩展而不修改源码;实践中通过接口编程、依赖注入、工厂模式和合理分层实现低耦合,如业务层依赖DAO接口而非具体数据库实现,最终使系统更灵活、可维护。
-
在Maven项目中添加Flyway依赖,纯Java项目需显式引入flyway-core,SpringBoot项目应优先使用spring-boot-starter-flyway;注意版本兼容性、配置项前缀(flyway.*)、SQL脚本命名规范及migrate调用时机。
-
本文详解为何MicrosoftGraphSDK的LargeFileUploadTask要求精确的流长度(streamSize),并说明PipedInputStream等动态生成流无法满足分块上传协议要求的原因,同时提供可行替代方案与最佳实践。
-
局部内部类可访问外部方法的局部变量,但变量必须是final或实际上的final,以确保数据一致性。
-
首先使用Maven或Gradle搭建多模块项目结构,通过父POM或settings.gradle统一管理子模块;接着在子模块间通过dependency或project依赖配置模块间调用关系;然后在IDE(如IntelliJIDEA)中导入根pom.xml或build.gradle,确保自动导入和JDK版本设置正确;最后保持清晰的目录结构与明确的依赖管理,避免循环引用,即可实现Java多模块项目的高效开发。
-
线程是Java中能独立执行代码的最小单位,一个程序至少有一个主线程;进程是操作系统分配资源的基本单位,线程是进程内的执行单元,共享内存但栈独立;创建线程推荐实现Runnable接口;线程状态包括NEW、RUNNABLE、BLOCKED、WAITING、TERMINATED;多线程用于提升CPU密集型和I/O密集型任务效率及GUI响应性,但需防范竞态、死锁等问题。