-
静态方法不能直接访问非静态成员变量,因其属于类而非对象实例,且静态方法在类加载时即可调用,而实例变量需对象创建后才存在;静态方法无this引用,无法定位具体实例。
-
首先设计Transaction类封装金额、类型、分类和日期,再通过FinanceManager管理交易记录并实现增删查及统计功能,接着用文件持久化保存数据,最后用Scanner实现控制台交互,逐步构建出结构清晰的小型个人财务工具。
-
Java中加号(+)用于字符串拼接时,只要任一操作数为String,其余操作数自动调用toString()转为字符串并左结合拼接;null转为"null";自定义类需重写toString();频繁拼接应使用StringBuilder。
-
containsKey比get()+null判断更合适,因其能准确区分“键不存在”和“键存在但值为null”,避免误判缓存未命中;且不触发值构造或反序列化,线程安全,语义清晰。
-
最常见的原因是未指定-XX:HeapDumpPath,JVM默认写入当前工作目录,而生产环境常因权限不足、路径只读或磁盘满导致静默失败;必须显式指定可写且有足够空间的绝对路径。
-
TransactionSystemException报错需先查getCause(),90%为SQLException或ConnectionClosedException;常见原因包括连接池未校验连接有效性、本类方法调用导致事务失效、InnoDB锁等待超时。
-
Integer.parseInt()严格解析字符串为int,不接受null、空串、空格、非数字字符或溢出值,需前置校验和异常捕获;valueOf()返回缓存Integer对象;进制解析须先去除前缀;溢出时应改用BigInteger.intValueExact()等安全方式。
-
最可靠的判空方式是obj==null。它能准确识别未分配内存的对象,避免调用方法时抛出NullPointerException;其他方式如toString()或isEmpty()在null时会直接崩溃。
-
单一职责原则要求一个类只负责一项职责,以降低耦合和提高可维护性。在Java中,若类承担多个功能(如用户注册与邮件发送),应拆分为独立类(如UserService和EmailService),使每个类仅处理单一业务逻辑,从而提升代码可读性、可测试性和团队协作效率,避免因一处变更影响其他功能。
-
应只捕获具体异常类型,避免捕获Throwable或泛型Exception;受检异常须显式处理而非静默吞掉;finally中勿覆盖原始异常;自定义异常需依场景选择继承RuntimeException或Exception。
-
应使用BufferedReader包裹System.in进行控制台输入,因其readLine()总读完整行、行为确定;写日记用Files.write()配合APPEND/CREATE和UTF-8编码;读日记用Files.readAllLines()但需捕获NoSuchFileException并判空;路径应封装为静态常量并优先使用用户主目录。
-
答案:Collectors.summingInt用于对集合中对象的int属性求和,需配合StreamAPI使用,通过ToIntFunction提取值并累加。示例中统计Product列表的price总和为45,适用于List、Set等集合类型,仅支持int类型,null值需提前处理,性能良好,适合数据聚合。
-
BitSet比boolean[]节省8倍内存因其按位存储,1字节存8个布尔值;但存在线程不安全、无泛型、随机访问有位运算开销、大索引可能OOM等问题。
-
fail-fast的核心是检测集合结构被意外修改而非并发;ArrayList的modCount在结构性修改时自增,迭代器构造时复制为expectedModCount,next()/hasNext()前比对二者,不等则抛ConcurrentModificationException。
-
Java读取文件乱码的根本原因是程序字符编码与文件实际编码不一致,需明确文件真实编码并显式指定,禁用系统默认编码,处理BOM,统一项目UTF-8规范。