-
多态产生的前提是继承或接口实现、方法重写、父类/接口类型引用;运行时通过invokevirtual指令查虚方法表动态绑定;static、private、final方法及字段访问不具多态性。
-
finally里写复杂逻辑危险,因其执行时机不可控且会覆盖原始异常或返回值;应仅保留无副作用的原子资源释放操作,其余逻辑移至catch后或用try-with-resources替代。
-
抽象方法在非抽象子类里必须重写是的,只要子类不是abstract类,它就必须实现父类中所有未实现的抽象方法。Java编译器会强制检查这一点,不满足就直接报错。常见错误现象:java:methoddoesnotoverrideorimplementamethodfromasupertype(当用了@Override但父类没对应抽象方法),或者更典型的:java:xxxisnotabstractanddoesnotoverrideabstractmeth
-
抽象类和抽象方法必须用abstract修饰;含抽象方法的类须声明为abstract,abstract类可无抽象方法;abstract方法不能是private、static或final;抽象类不可实例化,但可用多态引用子类对象。
-
volatile不能保证原子性,因为它只确保读写立即刷入主存和禁止重排序,不阻止操作被拆分为读-改-写三步;如counter++在多线程下结果小于预期。
-
Java数组下标越界时JVM直接抛出ArrayIndexOutOfBoundsException,因索引5超出长度为5数组的合法范围[0,4];该异常是运行时异常,编译通过但执行即崩溃。
-
使用HttpURLConnection调用天气API需设置User-Agent、启用重定向、URL编码中文、逐层解析JSON;注意和风需城市ID与lang=zh,OpenWeatherMap需units=metric及q/lat参数,避免403、429和解析异常。
-
向上转型是编译期自动允许的子类到父类/接口的赋值,安全且无需强转;向下转型需显式强转并配合instanceof检查以防ClassCastException;应优先用多态替代频繁转型。
-
Java接口异常统一返回格式的核心是通过全局异常处理器将未捕获异常转为标准JSON(code/msg/data),区分业务与系统异常,隐藏堆栈,结合自定义异常类、统一响应体及合理HTTP状态码映射,确保异常可追溯、可控、语义清晰。
-
答案:图书管理系统通过Book类和Library类实现增删查借功能,使用ArrayList管理图书,提供菜单交互。
-
Files.walk()提供安全简洁的全路径遍历,但需try-catch处理IOException;应避免纯递归防StackOverflowError,改用显式栈;Files.find()可深度优先早终止,walk()需后过滤;Windows中文/长路径需启用系统长路径支持并妥善处理异常。
-
String.intern()返回常量池中已存在字符串的引用,内容相同即复用;若不存在则将当前字符串内容放入池并返回其引用,与是否为字面量无关。
-
Timestamp转Date会丢失纳秒精度吗不会丢失,但Date本身不存纳秒——它只精确到毫秒。当你调用newDate(timestamp.getTime()),拿到的是截断纳秒后四舍五入到毫秒的值,比如2024-01-0112:00:00.123456789会变成2024-01-0112:00:00.123。实操建议:如果业务只要求毫秒级(比如日志时间、普通报表),直接用timestamp.getTime()构造Date没问题如果下游依赖纳秒(如金融交易流水号生成、分布式事件排序),别转
-
Java普通方法调用开销大,需保存PC、压栈、传参、跳转、执行、弹栈、恢复上下文;add(inta,intb)类方法调用开销常超总耗时60%,虚方法因查vtable等更慢。
-
Java中多态调用发生在运行时,通过invokevirtual指令结合虚方法表动态分派;需满足父类引用指向子类实例、方法非static/final/private、子类正确重写三个条件。