-
Java中Base64编码应使用JDK8+内置Base64.getEncoder().encodeToString(),线程安全且无需依赖;URL安全场景用getUrlEncoder().withoutPadding();解码后需按原始编码(如UTF-8)转字符串,不可直接newString(byte[]);避免手动拼接、错误字符集处理及误当加密使用。
-
Properties.load()读UTF-8中文配置会乱码,应改用load(Reader)并指定UTF-8编码;setProperty()是类型安全的专用方法,put()易致ClassCastException;store()覆盖写入且不保留格式;Properties非线程安全,需外部同步。
-
合并List首选addAll(),需目标集合可变;Set合并推荐构造器+addAll();Stream.concat()仅支持两流且不处理null;GuavaIterables.concat()为懒视图,需转实体集合。
-
Java异常体系通过checked/unchecked分层强制区分外部风险与代码缺陷:IOException等checked异常须显式处理,NullPointerException等unchecked异常应通过防御编程预防;Error不可捕获,自定义异常依业务是否必须响应选择继承Exception或RuntimeException,并善用cause链式传递根因。
-
Java项目Maven配置核心是确保mvn命令可识别且与JDK版本兼容,需正确设置JAVA_HOME和M2_HOME、使用官方二进制包、配置用户级settings.xml并验证编译成功。
-
Java反射是JVM提供的标准能力,通过Class对象动态获取类型信息并调用成员,但存在性能开销与安全限制;获取Class有三种方式,访问成员需区分getDeclaredXXX与getXXX,invoke()调用有三处易错点,且反射影响JIT优化。
-
Future.get()会阻塞线程,应优先使用带超时的get(timeout,unit)并捕获三类异常;调用前宜用isDone()等预检;生产中推荐CompletableFuture替代原生Future实现非阻塞链式异步编程。
-
Java中截取子字符串常用String类的substring()方法,提供两种重载形式:从指定索引到末尾,或指定起止索引(左闭右开)。2.该方法不修改原字符串,返回新字符串,索引从0开始。3.需注意索引越界会抛出StringIndexOutOfBoundsException异常,beginIndex不能大于endIndex且均不能为负。4.结合indexOf、lastIndexOf等方法可动态截取,如提取URL域名。5.若beginIndex等于endIndex,返回空字符串。掌握其用法和边界情况可满足大
-
正确处理InterruptedException需恢复中断状态、及时退出并清理资源,避免忽略或空吞异常,确保线程安全可控。
-
不是必须,但publicstaticfinal是定义常量的标准写法:public提供访问,static确保类级共享,final保证不可变;其中基本类型和String字面量为编译期常量,其余为运行期初始化。
-
合理使用异常机制可提升Java程序健壮性。应区分IOException、Json解析异常、HTTP客户端/服务端异常及自定义异常,针对性捕获处理;避免泛化catch,逐层处理并转换为统一业务异常,封装上下文信息;结合重试与熔断机制控制外部风险,防止系统级联故障。
-
IDEA启动提示“NoJDKspecified”需手动配置JDK路径:通过Configure→ProjectDefaults→ProjectStructure→SDKs添加JDK根目录(如C:\ProgramFiles\Java\jdk-17.0.1),再在ProjectSettings中指定该SDK;若仍报“Cannotresolvesymbol‘String’”,需同步检查ModuleSDK与ProjectSDK一致,并确认pom.xml中java.version兼容。
-
Java操作Excel最常用的方式是使用ApachePOI库,1.引入POI依赖,Maven项目添加poi-ooxml依赖;2.读取Excel使用XSSFWorkbook或HSSFWorkbook打开文件,遍历Sheet、Row和Cell读取内容并关闭资源;3.写入Excel创建Workbook、Sheet、Row和Cell,设置单元格值并写入文件;4.注意文件格式兼容性、空指针异常、样式设置、性能优化及资源关闭等问题。POI功能强大且适用性强,适用于大多数业务场景。
-
推荐用PaymentService接口而非CreditCardPayment实现类声明变量,因接口解耦便于替换实现、支持模拟测试、利于IDE导航且符合Spring依赖注入原则;接口应仅在需多实现或可替换处定义,避免泛滥;切换实现应通过配置驱动(如@Profile或反射加载),而非硬编码;接口方法须聚焦行为契约,封装可变参数,慎用默认方法。
-
静态方法不属于任何对象实例,它在类加载时绑定到Class对象,不依赖实例,调用时无需this上下文,也不能访问非static成员;实例方法则必须依附具体对象,隐含this参数,行为随对象状态变化。