✅ 一、Java基础(详细版)

✅ 一、Java基础(详细版)

1. JDK 和 JRE 有什么区别?

✅ 本质区别
  • **JDK(Java Development Kit)**是完整的Java软件开发工具包。
  • **JRE(Java Runtime Environment)**只是运行Java程序所需的环境,不含编译器。
✅ 组成比较
比较项 JDK JRE
是否包含 JRE ✅ 是 自身
是否包含 JVM
是否包含开发工具(javac, javadoc)
适用人群 开发者 普通用户
✅ 示例:

安装JDK后可运行以下命令:


javac HelloWorld.java  // 编译工具,仅JDK才有
java HelloWorld        // JRE环境中的 JVM 执行

2. ==equals() 的区别是什么?

✅ 原理:
操作符 比较内容 示例
== 引用是否指向同一内存地址 比如两个new String()返回不同对象
equals() 对象内容是否相等(可重写) String.equals()比较字符串值
✅ 示例分析:

String a = new String("hello");
String b = new String("hello");
System.out.println(a == b);       // false,指向不同对象
System.out.println(a.equals(b));  // true,值相同
✅ 注意事项:
  • 若未重写equals,行为与==一致(即默认比较引用)。
  • equals()用于比较内容,需重写hashCode()保持一致性。

3. 两个对象 hashCode() 相同,equals() 也一定为 true 吗?

❌ 不一定,原因是 hash 冲突可能发生。
✅ hashCode 和 equals 的关系:
  • equals 返回 true → hashCode 必须相等
  • hashCode 相等 → 不代表 equals 一定 true
✅ 示例代码(故意制造 hash 冲突):

class MyObj {
    int val;
    public MyObj(int val) { this.val = val; }

    @Override
    public int hashCode() {
        return 42; // 固定值,模拟冲突
    }

    @Override
    public boolean equals(Object o) {
        return o instanceof MyObj && ((MyObj)o).val == this.val;
    }
}

MyObj o1 = new MyObj(1);
MyObj o2 = new MyObj(2);

System.out.println(o1.hashCode() == o2.hashCode()); // true
System.out.println(o1.equals(o2)); // false

4. final 在 Java 中有什么作用?

✅ 使用场景:
修饰对象 含义 示例
final 变量 值一旦赋值后不可更改(常量) final int x = 10;
final 方法 不能被子类重写 final void print()
final 类 不能被继承 final class Math {}
✅ 示例:

final int a = 10;
// a = 20; // 编译错误:不可再赋值

class Base {
   
    final void show() {
   
        System.out.println("final method");
    }
}

final class Tool {
   }
// class SubTool extends Tool {} // 编译失败
✅ 边界情况:
  • final 变量必须在定义时或构造函数中初始化。
  • final 变量引用对象后,对象内容仍可变(对引用不对值)。

final List<String> list = new ArrayList<>();
list.add("a"); // ✅合法
// list = new ArrayList&l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值