-
Properties.load()读不到中文是因为默认用ISO-8859-1解码UTF-8文件导致乱码,应改用load(Reader)配合UTF-8编码的InputStreamReader;getResourceAsStream()返回null多因路径错误或资源未入classpath;Properties方法线程安全但并发load会覆盖;loadFromXML要求严格XML格式与编码声明一致。
-
静态类变量线程不安全,需通过synchronized锁、原子类、volatile(仅限简单赋值)、ThreadLocal或改用实例变量等方式保障线程安全。
-
FileOutputStream写文件为空或不全,因未调用close()或flush()导致缓冲区数据未落盘;应使用try-with-resources确保关闭,追加写需构造时传true;写中文须指定UTF-8编码;大文件应配合BufferedOutputStream优化性能。
-
Java内置三类核心类加载器:Bootstrap(C++实现,加载rt.jar)、Extension(加载lib/ext)、Application(加载-classpath);它们构成父子委托链,遵循双亲委派模型——先委托父加载器,失败后才自行加载,以保障核心类安全与类唯一性。
-
静态块不能抛出受检异常,否则编译失败;若抛出未捕获异常(含RuntimeException),类初始化失败,后续所有对该类的主动使用均抛NoClassDefFoundError。
-
Java二进制字面量必须用0b或0B前缀,Java7起支持;八进制用0开头但易错应避免;十六进制用0x/0X,最安全常用。
-
本文介绍如何在Java应用不重启的前提下,通过JVM内置诊断命令动态开启垃圾回收(GC)日志,支持输出到控制台或指定文件,并可随时关闭,适用于生产环境紧急排查内存问题。
-
ArrayList.clone()返回浅拷贝,仅复制数组引用,元素对象仍共享;修改副本中可变元素会影响原集合,仅当元素为String等不可变类型时安全。
-
Java中读取配置文件最常用、最轻量的方式是使用java.util.Properties类,它原生支持键值对格式的加载、修改和保存,无需额外依赖;可通过类路径、文件路径、URL或字符串加载,需注意编码(推荐UTF-8)及生产环境写入风险。
-
首先设计Contact类封装姓名、电话、邮箱,再通过AddressBook类使用ArrayList实现增删改查功能,最后在主类中测试添加、查询、删除联系人并遍历显示,构成基础通讯录系统。
-
配置Eclipse工作空间和首选项可显著提升Java开发效率。1.选择清晰路径作为工作空间,避免中文和空格,可为不同类型项目创建多个空间;2.启用自动补全、扩展内容辅助触发字符、设置组织导入以优化编辑体验;3.统一编译器合规级别与JDK版本,确保全局与项目一致;4.在保存时自动格式化代码、整理导入并添加缺失注解。合理设置后能减少错误、提升编码流畅度。
-
URLConnection因缺乏重定向、连接池、JSON支持及默认超时等能力而被弃用;推荐OkHttp(API简洁、性能好)、ApacheHttpClient(稳定但繁琐)或Java11+HttpClient(标准库、轻量),Spring项目优先选WebClient。
-
首先下载JDK11并安装,然后配置JAVA_HOME和PATH环境变量,最后通过java-version和javac-version验证安装成功。
-
ArrayBlockingQueue是Java中基于数组实现的有界阻塞队列,1.初始化需指定固定容量,不可变;2.使用put()/take()实现线程安全的阻塞通信;3.可选公平策略控制线程等待顺序;4.支持offer/poll等非阻塞操作提升灵活性;5.需合理设置容量并处理中断异常。
-
Java内存模型(JMM)是定义多线程下可见性、有序性和原子性的抽象规范,非JVM内存结构;它通过主内存与工作内存(虚构概念)描述线程交互,volatile靠内存屏障实现可见性与禁止重排序但不保证原子性,synchronized基于happens-before保证锁释放前修改对后续获取该锁的线程可见,final字段在正确构造前提下提供初始化安全性。