-
非静态内部类能直接访问外部类私有成员但必须依附实例;静态内部类无外部实例引用,适用于纯工具逻辑;匿名内部类易致内存泄漏,应谨慎使用。
-
Integer.parseInt()严格解析字符串为int,不接受null、空串、空格、非数字字符或溢出值,需前置校验和异常捕获;valueOf()返回缓存Integer对象;进制解析须先去除前缀;溢出时应改用BigInteger.intValueExact()等安全方式。
-
最可靠的判空方式是obj==null。它能准确识别未分配内存的对象,避免调用方法时抛出NullPointerException;其他方式如toString()或isEmpty()在null时会直接崩溃。
-
final修饰方法参数仅阻止参数变量重新赋值,不防止对象内容修改;对基本类型禁值变更,对引用类型仅禁引用重赋值,String不可变源于自身设计而非final。
-
Java项目需在pom.xml中添加pulsar-client3.3.0(或3.0.8+)依赖,支持BatchReceive及Java17+;serviceUrl须与Pulsar服务端advertisedAddress严格一致;subscriptionName须全局唯一且subscriptionType按场景选型;务必显式调用.close()释放资源。
-
module-info.java是CI/CD中模块治理的起点,通过显式声明依赖、强化编译期检查、支持模块图验证、实现增量构建与测试聚焦、支撑SBOM生成及安全扫描,将运行时问题提前至编译阶段拦截。
-
答案:搭建Java开发环境需安装JDK、配置JAVA_HOME和Path变量、安装IDE并验证。首先下载JDK11或17,安装后设置JAVA_HOME指向安装路径,并将%JAVA_HOME%\bin加入Path;macOS/Linux在.zshrc中添加对应export命令并生效;通过java-version和javac-version验证;接着安装IntelliJIDEA或Eclipse,手动配置ProjectSDK确保识别JDK;最后创建HelloWorld项目测试运行,输出结果即成功。核心是JDK安
-
单一职责原则(SRP)指一个类应仅有一个引起它变化的原因;如Order类应只管订单数据,计算、开票、通知等职责需按变化动因拆分为OrderCalculator、InvoiceGenerator、NotificationService等独立类。
-
ThreadLocal在切面中取不到值,本质是线程切换导致上下文未传递:Controller设值后若经@Async、CompletableFuture、DubboFilter等触发线程切换,切面运行在新线程,而ThreadLocal不跨线程,故get()返回null。
-
DCL单例不加volatile不是线程安全的,因对象构造可能被重排序,导致其他线程看到未初始化完成的实例;必须用volatile禁止重排序并保证可见性。
-
变量命名应精准表达逻辑与业务语境,避免依赖注释补救;优先用完整单词、明确作用域、布尔值加is/has前缀、常量带单位,且需随变量演进持续重构。
-
默认方法用于接口行为扩展,通过default关键字提供可被实现类自动继承的实例方法;静态方法属于接口本身,用publicstatic声明,仅能通过接口名调用,用于封装无状态工具逻辑。
-
Redis锁基于AP模型,主从异步复制下存在锁丢失风险,适合高吞吐、弱一致性场景;ZooKeeper锁基于CP模型,ZAB协议保障强一致与自动故障恢复,适用于金融等零容错核心业务。
-
Arrays.sort不能直接对任意对象数组排序,必须让对象实现Comparable接口或传入Comparator,否则抛ClassCastException;未实现Comparable时可用Comparator灵活定制排序规则,如按金额降序:Arrays.sort(orders,(a,b)->Double.compare(b.amount,a.amount))。
-
URL类用于表示和操作URL,专注地址解析、构造与标准化,不发送请求;可拆解协议、主机等字段,支持相对路径解析和自动编码,通过openConnection()配合URLConnection发起请求,但不可变且功能基础。