-
封装的核心是接口与实现分离,而非仅用private修饰符;它要求外部仅通过稳定接口操作,无需知晓内部存储、计算或状态维护细节,如BankAccount的deposit()和getBalance()方法。235 收藏 -
根本区别在于锁的处理:sleep()不释放锁且无需同步上下文,wait()必须在synchronized块中调用并立即释放锁。235 收藏 -
Account类设计需关注状态合法性、BigDecimal精度、字符串构造、哈希分段锁、余额校验、ConcurrentHashMap复合操作竞态、序列化持久化、密码分离及可测CLI交互。234 收藏 -
final修饰基本类型变量时值不可变,修饰引用类型时仅锁住引用本身而非对象内容;final方法不可重写但可重载;final类不可被继承;final字段须在构造器结束前初始化,JVM为其提供内存屏障保障。234 收藏 -
happens-before是一组显式定义的偏序规则,用于判断操作可见性与重排序约束;它不是时间先后关系,也不保证代码顺序即执行顺序。234 收藏 -
根本区别在于锁的处理:sleep()不释放锁且无需同步上下文,wait()必须在synchronized块中调用并立即释放锁。234 收藏 -
根本原因是IDEA存在全局、项目、文件三层编码配置且优先级不同,仅设ProjectEncoding不生效;需同步统一三项编码、右下角手动转码、pom.xml声明、Maven资源插件指定UTF-8。233 收藏 -
直接newThread()不适合高并发场景,因频繁创建销毁线程导致栈内存分配、GC压力、调度竞争及OS线程耗尽;Executor框架通过复用线程、统一管理生命周期、解耦任务提交与执行来优化。233 收藏 -
CLASSPATH不必须配置,但不配易出NoClassDefFoundError;JVM默认加载当前目录,外部JAR、多模块等场景需显式指定,且-cp优先级最高、覆盖CLASSPATH和默认.。233 收藏 -
实现克隆需实现Cloneable接口并重写clone()方法,1.默认为浅克隆,仅复制基本类型和引用地址;2.深克隆需手动复制引用对象;3.推荐使用拷贝构造函数或序列化替代以避免问题。233 收藏 -
Java注释分三种:单行(//)、多行(/.../)、文档(/*.../);分别用于行级说明、块级禁用、API文档生成,核心是提升可读性与协作性,且需随代码同步更新。233 收藏 -
JavaSwing做桌面音乐播放器可行,但需借助javazoom.jl等第三方库解码MP3,因javax.sound.sampled原生不支持;播放必须异步执行以避免EDT阻塞界面。232 收藏 -
Calendar类用于Java中的日期时间操作,通过getInstance()创建实例,支持字段获取设置、增减计算及比较,适用于传统项目。232 收藏 -
Java中基本类型直接存值于栈,引用类型存堆中对象地址;Integer等包装类有缓存机制(-128~127),自动装箱拆箱易引发NullPointerException,==比较引用而非值,数组和String均为引用类型,类型转换需注意范围与安全性。232 收藏 -
Java共享对象易现线程安全问题,因多线程并发读写非final字段时JVM不保证原子性、可见性与有序性;典型如count++非原子及volatileflag更新不可见;synchronized误用在于锁对象不一致或范围过大;volatile无法保障复合操作、check-then-act及多变量协同的原子性;应优先选用JUC工具类如AtomicInteger、ConcurrentHashMap等。232 收藏