当前位置:   article > 正文

面试 Java 基础八股文十问十答第九期

面试 Java 基础八股文十问十答第九期

面试 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):

  1. 整数类型: byte, short, int, long
  2. 浮点类型: float, double
  3. 字符类型: char
  4. 布尔类型: boolean

引用数据类型(Reference Data Types):

  1. 类(Class)
  2. 接口(Interface)
  3. 数组(Array)

3)switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上

在Java中,switch语句的表达式可以是byteshortcharintenumString。但对于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
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

但是,对于long类型,你需要使用if-else语句来实现相同的逻辑,因为switch不支持long

long l = 123L;
if (l == 123L) {
    // code
} else {
    // other cases
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

4)用最有效率的方法计算 2 乘以 8

在Java中,对于基本的数值计算,编译器通常会进行优化,因此在这个简单的情况下,你不必担心效率问题。直接使用乘法运算符*计算2乘以8即可:

int result = 2 * 8;
  • 1

5)Math.round(11.5) 等于多少?Math.round(-11.5) 等于多少

Math.round() 方法执行四舍五入。对于正数,0.5会向上舍入,而对于负数,0.5会向下舍入。因此:

  • Math.round(11.5) 等于 12
  • Math.round(-11.5) 等于 -11

6)float f=3.4;是否正确

在Java中,浮点字面常量默认是double类型,如果要将其赋给float类型的变量,需要进行强制类型转换。因此,正确的写法应该是:

float f = 3.4f;
  • 1

或者:

float f = (float) 3.4;
  • 1

添加 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有三种注释形式:

  1. 单行注释:以//开头,注释内容直到行尾。
  2. 多行注释:以/*开头,以*/结尾,可以跨越多行。
  3. 文档注释:以/**开头,以*/结尾,用于为类、方法、字段等成员提供文档说明,可以被工具解析生成文档。

10)访问修饰符 public,private,protected,以及不写(默认)时的区别

这些访问修饰符用于控制类的成员(字段、方法等)的访问权限,它们的区别如下:

  • public:被声明为public的成员可以被任何其他类访问。它们在整个程序中都是可见的。
  • private:被声明为private的成员只能在声明它们的类中访问。其他任何类都无法直接访问它们。
  • protected:被声明为protected的成员可以被同一包内的其他类访问,以及该类的子类(即使子类在不同的包中也可以访问)。
  • 不写(默认):如果不指定访问修饰符,则成员具有默认访问权限。默认访问权限意味着成员只能被同一包内的其他类访问,而对于不在同一包内的类,则无法访问这些成员。

开源项目地址:https://gitee.com/falle22222n-leaves/vue_-book-manage-system

前后端总计已经 700+ Star,1W+ 访问!

⭐点赞⭐收藏⭐不迷路!⭐

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/205128
推荐阅读
相关标签
  

闽ICP备14008679号