-
答案:Java中处理IOException和FileNotFoundException需显式捕获或抛出,因二者为检查型异常,且后者为前者的子类;应优先使用try-with-resources自动管理资源,确保安全关闭,避免泄漏,同时根据业务场景选择捕获异常或通过throws向上抛出。
-
方法重载发生在同类中,参数列表不同即可,用于提供多种调用方式;方法重写发生在子类对父类方法的覆盖,需签名一致,实现多态。
-
Java8u161+及主流OpenJDK默认支持无限制加密强度,无需手动配置JCE;若Cipher.getMaxAllowedKeyLength("AES")返回128,需升级JDK或旧版中替换local_policy.jar和US_export_policy.jar。
-
使用LibreOffice+JODConverter将Office文档转为PDF或HTML;2.通过Java接口返回PDF流,前端用PDF.js预览;3.图片、文本、Markdown等格式由浏览器直接支持或解析;4.需编辑功能时可集成OnlyOffice。
-
首先检查类路径配置是否正确,确保JVM能定位所需类文件。1.查看CLASSPATH环境变量,建议不设全局值而用-cp参数指定;2.使用java-cpbin:lib/*(Linux/macOS)或-cp"bin;lib*"(Windows)包含所有必要目录和JAR;3.确认编译输出路径正确,手动编译应使用javac-d生成包结构;4.检查依赖JAR是否在lib目录并可用jar-tf验证;5.IDE中检查BuildPath、清理项目、区分模块与类路径;6.导出可执行JAR时正确配置Class-Path属性。核
-
首先生成RSA密钥对,再用私钥对数据摘要签名,最后用公钥验证签名有效性。具体步骤:1.使用KeyPairGenerator生成2048位RSA密钥对;2.利用Signature.getInstance("SHA256withRSA")初始化签名对象,调用initSign(privateKey)并update数据后生成签名字节;3.验证时调用initVerify(publicKey),update相同数据后调用verify()返回布尔结果。可扩展至文件签名,需注意字符编码与异常处理,私钥应安全存储。
-
Arrays.asList()可将数组转为固定大小的List,适用于初始化和参数传递;2.结合newArrayList可创建可修改集合;3.Arrays.sort()排序后转集合保证有序性;4.Arrays.stream()支持复杂数据处理并收集为集合。掌握这些方法能提升编码效率,但需注意返回列表的不可变限制。
-
最安全的集合复制方式是直接使用newArrayList(original),它创建浅拷贝、类型安全、性能好,适用于所有Collection实现;需注意Arrays.asList()返回不可变列表,深拷贝须业务自行实现。
-
必须下载JDK而非JRE,选择匹配系统的x64版本(推荐EclipseTemurin),安装时勾选“AddtoPATH”,配置JAVA_HOME指向JDK根目录,并在Path中添加%JAVA_HOME%\bin;验证java-version和javac-version一致,IDE、Maven等工具依赖JAVA_HOME正确设置。
-
Java中必须使用大括号,核心原因是避免逻辑歧义、提升可读性与可维护性;所有控制结构无论语句多少均需加{},遵循K&R风格,且主流规范与工具强制要求。
-
wait()释放锁且需notify唤醒,sleep()不释放锁且超时自动恢复;前者用于线程协作,后者用于定时暂停。
-
应统一使用java.time包计算时间差:用Duration.between()处理Instant或LocalTime,Period.between()处理LocalDate或LocalDateTime;注意时区转换、单位语义区分及DateTimeFormatter大小写敏感问题。
-
静态方法不能被重写,只能被隐藏;JVM在编译期根据引用类型静态绑定,与实际对象类型无关,故Parentp=newChild();p.staticMethod()调用Parent的版本。
-
WorkStealing在ForkJoinPool中通过双端队列实现:线程本地LIFO操作(队尾),偷任务时FIFO从他人队列队首取,避免伪共享;仅适用于无状态、CPU密集型可拆分任务,粒度建议>100μs。
-
<p>用Math.random()做权重抽奖总抽不到低概率奖品,因其返回[0,1)导致最后一区间长度缺失;正确做法是预计算前缀和,用Math.random()*totalWeight后二分查找。</p>