-
封装、继承、多态是Java面向对象三大特性。1.封装通过private隐藏字段,提供getter/setter安全访问,保护数据;2.继承使用extends复用父类非私有成员,建立类层次,支持单继承;3.多态通过父类引用指向子类对象,重写方法实现不同行为,运行时动态调用,提升灵活性。三者结合增强代码可维护性、扩展性与复用性。
-
JAVA_HOME必须指向JDK根目录(如C:\ProgramFiles\Java\jdk-17.0.1或/usr/lib/jvm/java-17-openjdk-amd64),不可指向bin或jre子目录,否则Maven等工具会因无法识别JDK而启动失败。
-
最常用的是Integer.parseInt()和Integer.valueOf(),前者返回int、无对象开销,后者返回Integer、复用-128~127缓存;二者均不自动trim、对null/空串/非法字符均抛NumberFormatException,超int范围也明确报错。
-
throw用于方法体内主动抛出异常对象,throws用于方法签名声明可能抛出的异常类型;二者分工明确,常配合使用:底层用throw抛出异常,上层用throws声明并向上传递。
-
重载方法必须在同一个类中定义,判断依据仅为参数列表(数量、类型、顺序),与返回值无关;调用在编译期按变量声明类型绑定,不跨类追溯,泛型擦除可能引发重载冲突。
-
答案:图书库存盘点功能通过循环与文件流读取CSV格式数据,统计库存并输出结果。使用BufferedReader逐行解析图书信息,split(",")拆分字段,while循环累计数量或预警,再用PrintWriter写入统计结果,需注意资源关闭与异常处理。
-
线程中断是Java中协作式停止线程的机制,通过interrupt()设置中断状态,阻塞方法抛出InterruptedException并清空中断状态;捕获异常后应调用Thread.currentThread().interrupt()恢复状态,确保中断信号不丢失,遵循“捕获→恢复→退出或传播”原则,避免忽略异常或空catch,保证线程安全退出。
-
URL类用于表示和操作URL,专注地址解析、构造与标准化,不发送请求;可拆解协议、主机等字段,支持相对路径解析和自动编码,通过openConnection()配合URLConnection发起请求,但不可变且功能基础。
-
设计可扩展Java类库需遵循开闭原则,通过接口或抽象类定义行为契约,如Processor接口的process()方法,允许用户扩展而非修改代码;明确扩展点,使用protected钩子方法、@FunctionalInterface支持Lambda及ServiceLoader实现插件化;采用工厂与策略模式解耦创建逻辑,通过静态工厂或配置动态选择实现;确保向后兼容,避免修改公共API,用@Deprecated标记废弃方法并遵循语义化版本控制。
-
基本类型值存栈中,直接存储数据,引用类型栈中存地址指向堆中对象;传参时基本类型传递值副本,引用类型传递地址副本可修改对象状态;成员变量基本类型有默认值,引用类型默认为null;基本类型高效适合计算,引用类型支持面向对象特性,包装类存在装箱拆箱开销。
-
Collections.sort()本质是委托List.sort()原地排序,仅支持List子类,不返回新列表;依赖元素实现Comparable或传入Comparator,需防null、不可变列表及并发问题。
-
正确设置环境变量是配置Java运行环境的关键,需先安装JDK并记录安装路径;接着创建JAVA_HOME变量指向JDK目录;然后在Path中添加%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin;最后通过java-version和javac-version验证配置是否成功。
-
对象头包含MarkWord和KlassPointer,用于存储哈希码、锁状态、GC年龄及类元数据;在同步中支持锁升级,在GC中协助标记、分代与可达性分析。
-
Files.walk()提供安全简洁的全路径遍历,但需try-catch处理IOException;应避免纯递归防StackOverflowError,改用显式栈;Files.find()可深度优先早终止,walk()需后过滤;Windows中文/长路径需启用系统长路径支持并妥善处理异常。
-
使用Collectors.toSet()可将Stream转换为去重的Set集合,底层自动调用元素的equals和hashCode方法判断重复,适用于无需顺序的场景;处理自定义对象时需重写这两个方法以确保正确去重;若需保持插入顺序或排序,可选用LinkedHashSet或TreeSet实现。