Java 基础
JDK 和 JRE 有什么区别?
JDK(Java Development Kit)是开发工具包,提供了开发和运行环境;JRE(Java Runtime Environment)是运行环境。简单来说,JDK 包含了 JRE,还多了编译器和调试工具。如果你只需要运行程序,装 JRE 就够了;如果要写代码,必须安装 JDK。
== 和 equals 的区别是什么?
对于基本类型,== 比较的是值;对于引用类型,== 比较的是内存地址。equals 默认情况下也是比较地址,但像 String、Integer 这类类重写了该方法,变成了值比较。
String x = "string";
String y = "string";
String z = new String("string");
System.out.println(x == y); // true,指向常量池同一对象
System.out.println(x == z); // false,new 开辟了新的堆空间
System.out.println(x.equals(y)); // true,值相同
两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗?
不对。hashCode 相等只代表哈希桶位置可能相同,不代表内容一致。例如:
String str1 = "通话";
String str2 = "重地";
// 输出均为 1179395,但 equals 结果为 false
System.out.println(str1.hashCode());
System.out.println(str1.equals(str2));
final 在 Java 中有什么作用?
- 修饰类:该类不能被继承。
- 修饰方法:该方法不能被子类重写。
- 修饰变量:成为常量,初始化后不可修改。
Java 中的 Math.round(-1.5) 等于多少?
等于 -1。Math.round 的逻辑是加 0.5 后向下取整,负数时 -1.5 + 0.5 = -1.0,取整即为 -1。
String 属于基础的数据类型吗?
不属于。Java 有 8 种基本数据类型(byte, boolean, char, short, int, float, long, double),String 是对象。
Java 中操作字符串都有哪些类?它们之间有什么区别?
主要有 String、StringBuffer 和 StringBuilder。


