零基础将deepseek和mimo接入codex(codex管理工具版):TaoToken统一Key配置实战
2026/9/28 18:44:09
答案:Java 中只有值传递,不存在引用传递:
int、char等)。new一个对象),不会影响原引用。示例代码:
java
运行
public class PassTest { // 基本类型:值传递 public static void changeInt(int a) { a = 10; } // 对象类型:传递引用的拷贝 public static void changeObj(User user) { user.setName("新名字"); // 修改对象内容,影响原对象 user = new User("无关"); // 修改引用本身,不影响原引用 } static class User { private String name; public User(String name) { this.name = name; } // getter/setter 省略 } public static void main(String[] args) { int num = 1; changeInt(num); System.out.println(num); // 输出 1(未改变) User u = new User("旧名字"); changeObj(u); System.out.println(u.getName()); // 输出 新名字(对象内容被改) } }答案:
==:equals():Object类的方法,默认实现等价于==(比较地址);String、Integer)重写了equals(),改为比较内容;equals()(建议同时重写hashCode())。| 特性 | String | StringBuffer | StringBuilder |
|---|---|---|---|
| 可变性 | 不可变(final) | 可变 | 可变 |
| 线程安全 | 安全(不可变) | 安全(同步方法) | 不安全 |
| 性能 | 低(频繁创建) | 中 | 高 |
| 适用场景 | 少量字符串操作 | 多线程字符串操作 | 单线程字符串操作 |
| 维度 | 抽象类 | 接口 |
|---|---|---|
| 继承 / 实现 | 单继承 | 多实现 |
| 方法 | 可含抽象 / 非抽象方法 | JDK8 + 可含默认 / 静态方法,其余抽象 |
| 成员变量 | 可含任意变量 | 只能是public static final |
| 构造方法 | 有 | 无 |
| 设计理念 | 体现 "is-a"(继承) | 体现 "has-a"(能力) |
final、static方法;JVM 运行时数据区分为 5 个部分:
| 维度 | synchronized | Lock(如 ReentrantLock) |
|---|---|---|
| 实现方式 | JVM 层面(关键字) | JDK 层面(接口) |
| 释放锁 | 自动释放(异常 / 方法结束) | 手动释放(finally) |
| 可中断 | 不可中断 | 可中断(lockInterruptibly) |
| 超时获取锁 | 不支持 | 支持(tryLock (time)) |
| 公平锁 | 非公平 | 可指定公平 / 非公平 |
| 条件变量 | 单一 | 多条件(Condition) |
核心参数共 7 个,关键 5 个:
corePoolSize:核心线程数(常驻线程);maximumPoolSize:最大线程数;keepAliveTime:非核心线程空闲超时时间;workQueue:任务队列(如 ArrayBlockingQueue、LinkedBlockingQueue);threadFactory:线程创建工厂;handler:拒绝策略(如 AbortPolicy、CallerRunsPolicy)。hash(key) = key.hashCode() ^ (key.hashCode() >>> 16),再与数组长度 - 1 取模;| 维度 | ArrayList | LinkedList |
|---|---|---|
| 底层实现 | 动态数组 | 双向链表 |
| 随机访问 | 快(O (1)) | 慢(O (n)) |
| 增删操作 | 慢(需移动元素) | 快(仅改指针) |
| 内存占用 | 连续内存,有扩容冗余 | 每个节点存前后指针,占用更多 |
| 适用场景 | 大量读取、少量增删 | 大量增删、少量读取 |