-
Java中组合条件需用&&、||、!配合括号:&&要求全真,||满足一真即可,注意短路特性防NPE;括号明确优先级避免歧义;取反时!须包裹整个表达式;字符串用equals、判空前置、布尔变量直接使用。
-
Java版本未识别因PATH未添加JDK路径,需将JDK的bin目录加入PATH;2.JAVA_HOME配置错误会导致工具启动失败,应指向JDK根目录并正确引用;3.多版本冲突可通过调整PATH顺序或使用版本管理工具解决;4.IDE无法识别JDK需手动设置项目JDK路径并匹配语言级别。
-
应按场景选择流:字节流(InputStream/OutputStream)处理二进制数据,字符流(Reader/Writer)处理文本并需指定编码;缓冲流必须包装底层流,推荐使用try-with-resources自动管理关闭。
-
Java并发中内存可见性必须依赖JMM同步机制:volatile保证单变量读写可见但不保证原子性;synchronized通过锁的清空+刷出保障可见性与原子性;final字段在正确发布前提下提供初始化值的天然可见性。
-
Iterator是Java集合框架中用于安全遍历和删除元素的接口,通过hasNext()、next()和remove()方法实现统一访问;使用时需注意remove()调用时机、fail-fast机制及避免遍历中直接修改集合;增强for循环基于Iterator实现,但无法执行删除操作;多线程环境下推荐使用CopyOnWriteArrayList等线程安全集合以避免并发修改异常。
-
在Hibernate5中,仅靠hibernate.jdbc.time_zone=UTC无法保证LocalDateTime字段读取时保持UTC语义;需改用OffsetDateTime或Instant等时区感知类型,并配合数据库列类型(如TIMESTAMPWITHTIMEZONE)与JDBC驱动协同工作。
-
多态通过继承与方法重写实现,父类引用指向子类对象,调用时根据实际对象动态绑定执行对应方法,如Animala=newDog()调用makeSound()输出Dogbarks,可在数组或方法参数中统一处理不同子类对象,需注意方法非static或private且存在于父类中。
-
核心在于将Enrollment作为独立实体而非单纯关联表,用复合主键或自增ID建模,封装状态变更方法校验业务规则,禁用裸setter;查询避免N+1,优先@EntityGraph;外键约束须数据库级ONDELETERESTRICT并配合应用层校验。
-
正则表达式按标准化规范分为BRE和ERE两类:BRE需转义+?{}|()等元字符,ERE默认启用;按实现引擎分POSIX、PCRE、Java、.NET、JavaScript等,其中PCRE因兼容Perl高级特性成为事实标准。
-
不一定。多线程是否提速取决于任务可并行性、CPU密集型(宜匹配核心数)或I/O密集型(受益于并发)、并发开销(锁竞争、上下文切换)及科学基准测试,盲目使用反而更慢。
-
受检异常必须显式处理,否则编译失败;即继承Exception(非RuntimeException子类)的异常需try-catch或throws声明,如IOException;运行时异常(如NullPointerException)继承RuntimeException,编译期不检查;Error(如OutOfMemoryError)不应捕获。
-
Java泛型采用类型擦除机制,编译时移除泛型参数,运行时仅保留Object或上界类型,导致无法在运行时获取泛型信息、不能使用instanceof判断具体参数化类型、不能newT()等。
-
答案是使用方法、静态代码块、实例初始化块和工具类实现代码复用。通过方法封装逻辑可多次调用;静态块在类加载时执行一次,适合初始化静态资源;实例初始化块在创建对象时运行,用于共用初始化;公共逻辑可封装到工具类的静态方法中,便于跨类调用,提升维护性和复用性。
-
最稳妥方式是用Collection.toArray(T[])方法,传入newT[0]空数组,避免ClassCastException;因无参toArray()恒返Object[],强转String[]等会失败;原始类型数组需流式映射。
-
抽象类不必含抽象方法,其核心是限制实例化并允许部分实现;适用场景包括共享状态、构造逻辑及非public成员;设计时应明确扩展点,避免泛型擦除导致的覆写失败。