-
首先下载并安装JDK,然后配置JAVA_HOME、Path和CLASSPATH环境变量,最后通过java-version和javac-version验证安装成功。
-
synchronized是Java基于Monitor实现的可重入独占锁,保障原子性、可见性、有序性;分修饰实例方法(锁this)、静态方法(锁Class)、同步代码块(显式指定锁对象)三种用法,底层对应ACC_SYNCHRONIZED标志或monitorenter/monitorexit指令,支持锁升级,但不支持中断、超时与公平策略。
-
InvocationTargetException是反射调用中包装目标异常的中间异常,需通过getCause()获取真实异常并针对性处理。
-
浅拷贝复制基本类型并共享引用对象,深拷贝则完全独立复制对象及其引用的对象。1.浅拷贝通过实现Cloneable接口重写clone()方法,但引用类型仍共用;2.深拷贝可通过手动克隆引用对象、序列化或第三方库实现,确保副本间无共享引用;3.序列化方式通用性强,适合复杂嵌套对象;4.选择依据:简单场景用浅拷贝,需隔离修改时用深拷贝。
-
Swing单位转换界面关键点:用JComboBox选预设单位、JTextField仅输数字且延迟计算、换算统一经基准单位(如长度用m)、温度注意273.15偏移、重量区分吨与盎司、日志更新须在EDT线程、资源用getResource加载。
-
正确处理Java线程中断需响应中断信号而非忽略,调用thread.interrupt()设置中断状态,线程应通过isInterrupted()检查或捕获InterruptedException做出响应;阻塞方法抛出异常后应恢复中断状态并清理资源;循环任务中需定期检测中断以及时退出;线程池中可通过future.cancel(true)触发中断,确保任务支持中断并完成清理,保持信号传递。
-
CompletableFuture是Java异步编程核心工具,支持非阻塞任务执行与组合;通过supplyAsync/runAsync创建异步任务,默认使用ForkJoinPool.commonPool(),建议生产环境用自定义线程池;thenApply实现同步转换,thenCompose用于链式依赖调用;thenCombine合并两个任务结果,allOf等待多个任务完成;exceptionally处理异常并返回默认值,handle统一处理结果与异常,whenComplete执行副作用如日志;掌握这些方法可
-
继承使子类编译期获得父类非私有成员,支持运行时多态;但易致紧耦合,应优先组合与接口实现,仅当满足稳定“is-a”关系时使用。
-
Java密封类需用permits显式列出所有子类,子类须在同一编译单元中声明并用final/sealed/non-sealed修饰;non-sealed用于开放特定分支继承;switch匹配时要求穷尽所有permits子类或含default。
-
Java普通方法调用开销大,需保存PC、压栈、传参、跳转、执行、弹栈、恢复上下文;add(inta,intb)类方法调用开销常超总耗时60%,虚方法因查vtable等更慢。
-
ReadWriteLock通过分离读写锁提升并发性能,允许多线程并发读、写操作独占,适用于读多写少场景;使用ReentrantReadWriteLock时需注意锁配对释放、避免读锁升级写锁、合理选择公平模式,并在高并发下考虑StampedLock优化。
-
Error和Exception均继承自Throwable,但Error表示系统级无法恢复的严重问题,如内存溢出,程序通常不应捕获;Exception表示可处理的异常,分为编译器强制处理的检查异常(如IOException)和运行时异常(如NullPointerException),可通过try-catch或throws恢复执行,正确区分二者有助于提升程序健壮性。
-
抽象类是不能被实例化的类,用于定义通用行为框架,具体类继承抽象类并实现其抽象方法。示例中Shape为抽象类,包含抽象方法calculateArea()和具体方法displayInfo();Rectangle和Circle为具体类,分别实现calculateArea()。通过父类引用调用子类对象,实现多态。抽象类支持代码复用、结构统一和强制实现关键逻辑,适用于具有“is-a”关系的类体系。一个类只能单继承抽象类,若子类未实现全部抽象方法则必须声明为抽象类。正确使用抽象类可提升代码可维护性、扩展性和复用性。
-
Thread.sleep让兔子“睡过头”是因为它粗暴暂停线程且不释放锁,若写在循环开头则每轮固定休眠,无法模拟随机懒惰;应改用Random生成波动休眠时间,并避免在synchronized块中调用。
-
MyBatis一级缓存默认开启且仅限单个SqlSession内生效,重复查询相同语句直接返回缓存结果;但无法感知其他SqlSession的数据库变更,存在数据不一致风险,需谨慎使用。