面试 Java 基础八股文十问十答第九期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!
⭐点赞⭐收藏⭐不迷路!⭐
1)Oracle JDK 和 OpenJDK 的对比
Oracle JDK(Java Development Kit)和 OpenJDK(Open Java Development Kit)都是用于Java开发的工具包,它们有很多相似之处,但也存在一些区别:
- 源代码的开放性: 主要区别在于源代码的开放性。OpenJDK是一个开源项目,其源代码可在OpenJDK项目中公开获得,而Oracle JDK的源代码在大部分时间是不开放的。然而,自JDK 7以来,Oracle已经在发布时将其JDK的源代码发布到OpenJDK项目中。
- 授权和支持: Oracle JDK包含了一些商业功能(如Java Flight Recorder和商业支持工具),这些功能在OpenJDK中可能没有或需要额外的配置。Oracle JDK还提供了商业支持,而OpenJDK主要依赖于社区支持。
- 更新频率: Oracle JDK的更新可能会比OpenJDK早发布,但在实践中,这两者的差异通常较小。
在实际使用中,许多人选择OpenJDK,因为它是一个开源项目,可以自由使用,而且在大多数用例中,它与Oracle JDK的性能几乎相同。
2)Java有哪些数据类型
Java具有两类数据类型:基本数据类型和引用数据类型。
基本数据类型(Primitive Data Types):
- 整数类型: byte, short, int, long
- 浮点类型: float, double
- 字符类型: char
- 布尔类型: boolean
引用数据类型(Reference Data Types):
- 类(Class)
- 接口(Interface)
- 数组(Array)
3)switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上
在Java中,switch语句的表达式可以是byte、short、char、int、enum和String。但对于long,是不被支持的。
具体来说:
- 可以用于的数据类型:
byte,short,char,int,enum,String。 - 不支持的数据类型:
long。
例如:
byte b = 1;
switch (b) {
case 1:
// code
break;
// other cases
}
String str = "example";
switch (str) {
case "example":
// code
break;
// other cases
}
但是,对于long类型,你需要使用if-else语句来实现相同的逻辑,因为switch不支持long:
long l = 123L;
if (l == 123L) {
// code
} else {
// other cases
}
4)用最有效率的方法计算 2 乘以 8
在Java中,对于基本的数值计算,编译器通常会进行优化,因此在这个简单的情况下,你不必担心效率问题。直接使用乘法运算符*计算2乘以8即可:
int result = 2 * 8;
5)Math.round(11.5) 等于多少?Math.round(-11.5) 等于多少
Math.round() 方法执行四舍五入。对于正数,0.5会向上舍入,而对于负数,0.5会向下舍入。因此:
Math.round(11.5)等于12Math.round(-11.5)等于-11
6)float f=3.4;是否正确
在Java中,浮点字面常量默认是double类型,如果要将其赋给float类型的变量,需要进行强制类型转换。因此,正确的写法应该是:
float f = 3.4f;
或者:
float f = (float) 3.4;
添加 f 后缀或者进行强制类型转换,将浮点字面常量转为float类型。
7)short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗
在第一种情况下,编译器会报错,因为s1 + 1会将结果提升为int类型,而s1是short类型,需要进行强制类型转换才能赋值给s1,但是没有进行强制类型转换,因此会报错。在第二种情况下,没有错误,因为+=操作符会隐式进行类型转换,所以不会报错。
8)Java语言采用何种编码方案?有何特点?
Java语言采用Unicode编码方案。Unicode是一种全球字符集标准,它为每种语言中的每个字符都分配了一个唯一的数字码位。Java使用Unicode编码的主要特点包括:
- 支持几乎所有世界上存在的字符集,包括各种语言的字符、符号以及特殊字符。
- 每个字符都有一个唯一的Unicode码值,范围从 0 到 0x10FFFF。
- Java中的char数据类型是用来表示Unicode码值的,它占用16位(两个字节)的存储空间。
9)什么是Java注释
Java注释是一种用来对代码进行说明、解释和文档化的特殊文本,它不会被编译器编译成字节码,仅用于提高代码的可读性和可维护性,以及生成文档。Java有三种注释形式:
- 单行注释:以
//开头,注释内容直到行尾。 - 多行注释:以
/*开头,以*/结尾,可以跨越多行。 - 文档注释:以
/**开头,以*/结尾,用于为类、方法、字段等成员提供文档说明,可以被工具解析生成文档。
10)访问修饰符 public,private,protected,以及不写(默认)时的区别
这些访问修饰符用于控制类的成员(字段、方法等)的访问权限,它们的区别如下:
public:被声明为public的成员可以被任何其他类访问。它们在整个程序中都是可见的。private:被声明为private的成员只能在声明它们的类中访问。其他任何类都无法直接访问它们。protected:被声明为protected的成员可以被同一包内的其他类访问,以及该类的子类(即使子类在不同的包中也可以访问)。- 不写(默认):如果不指定访问修饰符,则成员具有默认访问权限。默认访问权限意味着成员只能被同一包内的其他类访问,而对于不在同一包内的类,则无法访问这些成员。
开源项目地址:gitee.com/falle22222n…
前后端总计已经 700+ Star,1W+ 访问!
⭐点赞⭐收藏⭐不迷路!⭐