-
使用Scanner类读取键盘输入,需导入java.util.Scanner并创建实例;2.调用nextInt、nextLine等方法获取不同类型数据,注意nextInt不读取换行符可能导致nextLine读取空字符串;3.推荐使用后关闭Scanner;4.输出通过System.out.println打印并换行,print不换行,printf实现格式化输出;5.注意处理InputMismatchException异常及合理使用循环读取多组输入。
-
Java中通过this()实现构造方法链,确保代码复用和初始化一致性,this()必须是构造方法首条语句,且不可递归调用,避免循环依赖。
-
CAS是CPU指令级原子操作,通过cmpxchg等硬件指令实现“读-比-写”三步不可分割;它非Java语法,由Unsafe封装调用,存在ABA问题、循环开销大、不支持多变量复合操作等局限。
-
Arrays工具类提供排序、查找、比较、填充和复制等操作,提升开发效率。1.sort()支持基本类型和对象数组排序,对象数组可结合Comparator实现降序;2.binarySearch()需在有序数组上执行,否则结果不可预测,查找失败返回负值表示插入点;3.equals()比较一维数组内容,deepEquals()用于多维数组深度比较;4.fill()可全量或范围填充数组;5.copyOf()和copyOfRange()简化数组复制。注意使用前提如排序状态和引用类型匹配,避免误用。
-
集合框架比数组更灵活可扩展,但需依场景选择:动态扩容、类型安全、内置算法和对象操作选集合;固定长度、高性能读取、低内存开销选数组。
-
InterruptedException是线程被主动中断时抛出的检查异常,必须显式处理;它仅在调用特定阻塞方法且线程已被interrupt()时触发,本质是设置中断状态位并在阻塞点抛异常,而非强制终止线程。
-
Java集合框架提供统一、可扩展、类型安全的容器接口与实现,解决数组长度固定、缺乏内置算法等问题,支持动态扩容、泛型约束、统一操作契约及并发安全等特性。
-
类是模板,对象是用new创建的具体实例;类不占内存、不能执行方法,仅描述结构,真正存储数据和执行行为的是对象,每个对象拥有独立字段值,静态成员除外。
-
线程同步的根本原因是共享变量的可见性与原子性丢失;synchronized通过互斥访问和内存屏障解决,volatile仅保证可见性不保证原子性,同步粒度不当易致性能下降或死锁。
-
submit()返回Future可获取结果或取消任务,execute()无返回值且异常易静默;shutdown()等待任务自然完成,shutdownNow()尝试中断并清空队列;CachedThreadPool易因无限建线程导致OOM。
-
System.out.println本质是PrintStream的write+flush,因默认autoFlush=true且println触发隐式flush,故立即输出;但print()或write()不刷新,重定向后易因缓冲或异常吞没导致无输出。
-
该用Semaphore而不是synchronized时:需限制同时访问资源的线程数量(如连接池、限流),而非仅互斥;synchronized无法表达“最多N个”,且不支持超时、公平性、非阻塞获取等特性。
-
逻辑运算符用于布尔类型条件判断,具有短路特性,如&&、||常用于流程控制;位运算符对整数二进制位操作,无短路,如&、|、^用于标志位处理或性能优化。
-
使用HttpURLConnection调用天气API需设置User-Agent、启用重定向、URL编码中文、逐层解析JSON;注意和风需城市ID与lang=zh,OpenWeatherMap需units=metric及q/lat参数,避免403、429和解析异常。
-
JavaMap快速查找的核心在于底层结构围绕低时间复杂度访问优化,HashMap平均O(1)、TreeMap稳定O(logn)、LinkedHashMap保持O(1)查找且维护顺序,正确重写hashCode/equals、合理初始化容量、避免遍历时修改是关键。