-
多态的核心是父类引用指向子类对象并结合方法重写,通过动态绑定在运行时确定具体方法调用。1.继承与重写是基础,子类继承父类并重写方法;2.向上转型允许父类引用指向子类对象,如Animala=newDog();3.JVM通过虚方法表实现运行时方法绑定,根据实际对象类型调用对应方法;4.多态提升代码扩展性与可维护性,符合开闭原则,支持通用方法处理不同子类对象。
-
Java中线程间通信最基础方式是wait()、notify()、notifyAll()配合synchronized使用,三者属Object类方法,必须在同步上下文中调用,否则抛IllegalMonitorStateException;wait()释放锁并等待,notify()唤醒一个等待线程,notifyAll()唤醒全部;需用while循环检查条件防虚假唤醒,且须确保监视器对象一致。
-
AtomicLongFieldUpdater是基于反射的原子更新器,用于对volatilelong字段进行无锁CAS更新,不创建额外对象,适合高频更新、内存敏感场景;需注意字段必须为public/protectedvolatilelong,且updater类须能访问该字段。
-
答案:&&是短路与,左边为false时右边不执行;&是逻辑与且不短路,两边均计算,还可用于按位与操作。
-
当使用Scanner的nextDouble()等方法读取非匹配类型输入时,会抛出InputMismatchException而非NumberFormatException,若catch块未正确声明该异常类型,则异常将未被捕获而直接终止程序。
-
Java8u161+及主流OpenJDK默认支持无限制加密强度,无需手动配置JCE;若Cipher.getMaxAllowedKeyLength("AES")返回128,需升级JDK或旧版中替换local_policy.jar和US_export_policy.jar。
-
Java序列化是将运行中对象(含字段值、引用关系)转为字节流,仅保存实例状态,不保存方法、静态变量;反序列化则重建等价对象。必须实现Serializable接口以通过JVM许可检查,该接口为标记接口;未实现则运行时抛NotSerializableException;父类未实现时其字段丢失;内部类序列化要求外部类也实现;建议显式声明serialVersionUID避免InvalidClassException;static和transient字段不参与序列化,transient字段反序列化后为默认值,且全过
-
Java中默认构造方法仅在类未显式定义任何构造方法且非匿名类、接口或枚举时由编译器自动生成,具有与类相同的访问修饰符并隐式调用super()。
-
线程结束需通过逻辑控制实现,1.正常运行结束:run()方法执行完毕后自动终止,适合处理完任务的场景;2.中断机制:调用interrupt()通知线程,通过isInterrupted()检查状态或捕获InterruptedException实现优雅退出;3.volatile标志位:定义volatileboolean变量,线程定期检查该标志并退出。推荐使用中断或标志位方式,避免stop()等不安全方法导致的问题。
-
Java集合对null支持差异显著:ArrayList/LinkedList允许任意位置存null;HashMap/LinkedHashMap允许一个null键和多个null值;TreeMap/TreeSet完全禁止null;ConcurrentHashMap拒绝null键值,CopyOnWriteArrayList允许add(null)。
-
双亲委派被打破的典型信号是NoClassDefFoundError或ClassNotFoundException发生在同一类名、不同模块间;本质是当前ClassLoader找不到类而父加载器却有,需检查加载器链及OSGi的Import-Package声明。
-
Java21是最值得升级的LTS版本,尤其适用于I/O密集型服务、云原生微服务及长期维护项目;升级可解决线程资源瓶颈、GC停顿和并发代码可维护性差三大痛点。
-
Java枚举是独立引用类型,编译为final类继承Enum,具备类型安全、序列化支持和switch语义检查;必须用enum关键字定义,常量首行声明,构造器私有且隐式final,实例唯一且不可反射创建。
-
JVM仅接受publicstaticvoidmain(String[]args)或publicstaticvoidmain(String...args)两种签名;其他改动会导致运行时错误,因JVM硬编码校验修饰符、静态性、返回类型及参数类型。
-
静态绑定在编译期确定方法调用,依据引用类型,适用于private、static、final及构造方法;动态绑定在运行时通过vtable或itable依据实际对象类型分派非私有实例方法或接口方法。