-
静态方法不能被覆盖,只能被隐藏Java里没有“静态方法覆盖”这回事——override只适用于实例方法。子类声明同名、同参数、同返回类型的static方法时,实际是**隐藏(hiding)**了父类方法,不是重写。关键区别在于:调用哪个版本,取决于**引用类型**(编译时类型),而不是对象实际类型(运行时类型)。如果用Parentp=newChild();,再调用p.staticMethod(),执行的是Parent.staticMethod()如果用Childc=newChil
-
ConcurrentHashMap的get不加锁也能安全,是因为Node的val和next字段为volatile,借助JVM内存模型的happens-before保证可见性,单次读取原子且无需锁;全程仅三次内存访问,遇扩容自动查新表。
-
Java中需用带标签的break跳出外层循环:在外层循环前加“标签名:”,内层用“break标签名;”,标签后必须跟冒号且位于循环语句正前方。
-
选择合适的Java镜像并编写Dockerfile是部署核心,推荐使用openjdk:17-jre等LTS版本,通过dockerbuild构建镜像,dockerrun运行容器,并可结合多阶段构建、JVM参数优化和HEALTHCHECK提升稳定性。
-
Method.invoke()慢主因是JVM保护性降级:访问检查、参数封装、类型擦除转换及无法充分内联;缓存Method、setAccessible(true)、改用MethodHandle或模块opens可优化。
-
先编译Pattern再用Matcher匹配,可高效处理字符串。例如匹配邮箱:使用Pattern.compile()定义规则,matcher.find()遍历结果,输出所有邮箱地址。处理多行文本时添加Pattern.DOTALL标志,使.匹配换行符,结合非贪婪模式.*?提取日志中的错误信息和用户。复杂结构推荐分组捕获并注释group编号含义,提升可维护性。启用UNICODE_CHARACTER_CLASS支持中文字符识别。性能优化方面,避免嵌套量词防止回溯灾难,优先使用非贪婪模式,固定前缀可用indexOf
-
能,外部类可用default权限,仅限同包访问,跨包不可见、不可实例化,且文件中最多一个public类,文件名须与其一致。
-
String.intern()可使重复JSONkey共享同一对象,降低内存占用与GC压力;需限定在有限高频key集合中使用,避免敏感信息或大字符串误用,并推荐通过预定义KNOWN_KEYS集合控制intern范围。
-
Optional.filter()用于条件性保留单个值:值存在且满足Predicate时返回原Optional,否则返回empty;它不遍历集合,不改变泛型类型,且在empty时不执行Predicate。
-
ReentrantLock提供比synchronized更灵活的线程同步控制,支持手动加锁释放、尝试获取锁、定时等待、可中断及公平锁机制,并可通过Condition实现多条件等待通知,适用于复杂并发场景。
-
ArrayList基于动态数组实现,适合随机访问和读取多的场景,get操作为O(1);LinkedList基于双向链表实现,适合插入删除频繁的场景,add和remove在中间位置为O(n),但无需扩容。
-
add()遍历时必报ConcurrentModificationException,因迭代器的expectedModCount与集合modCount不一致触发fail-fast机制;安全做法包括暂存后批量添加、倒序遍历、ListIterator.add()或改用CopyOnWriteArrayList等。
-
Java对象头的MarkWord动态决定synchronized锁行为:无锁(01,存哈希码)、偏向锁(01但biased=1,存线程ID)、轻量级锁(00,存栈中LockRecord指针)、重量级锁(10,存ObjectMonitor指针),升级由线程竞争触发且不可逆。
-
不可变类通过final修饰类和字段确保状态不可变,如Person类;需对可变对象进行防御性拷贝,如ImmutableDate中复制Date对象;不提供setter或修改方法,仅保留getter;构造函数避免this引用泄露,保证初始化安全。String和Integer是典型示例。
-
Collections.copy()方法将源列表元素复制到目标列表,要求目标列表长度不小于源列表。示例中使用Arrays.asList初始化目标列表大小,避免IndexOutOfBoundsException。关键点:目标列表必须预先具备足够容量,否则抛异常;元素被覆盖但长度不变。常见错误是目标列表为空或过短,需通过初始化占位符修正。适用于ArrayList等List实现,不适合Set、Map。性能好但依赖目标列表就绪,适合固定结构列表的批量更新。