面试 Java 基础八股文十问十答第十期
面试 Java 基础八股文十问十答第十期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!
⭐点赞⭐收藏⭐不迷路!⭐
1)&和&&的区别
& 和 && 都是用于逻辑与操作的运算符,但有一些关键的区别:
&是按位与运算符,用于对两个整数的每一位执行与操作。&&是逻辑与运算符,用于在布尔表达式中执行逻辑与操作。
在使用逻辑与操作时,主要区别在于短路行为:
&执行完整的位与操作,不论第一个操作数的值如何,都会对第二个操作数进行求值。&&会执行短路求值,即如果第一个操作数为 false,则不会对第二个操作数进行求值,因为整个表达式已经确定为 false。
2)Java 有没有 goto
在 Java 中,goto 是一个保留字,但实际上并没有被使用。Java 编程语言不支持使用 goto 语句,这是为了防止代码出现难以理解和维护的结构。
Java 使用结构化编程的原则,通过循环、条件语句和方法调用来控制程序流程,而不是使用 goto 语句。这样做有助于提高代码的可读性和可维护性,避免了由于使用 goto 而引起的复杂的控制流问题。
3)final 有什么用?
在 Java 中,final 关键字有多种用途:
-
不可变变量: 当应用于变量时,
final使该变量成为常量,一旦被赋值后就不能再修改。这有助于提高代码的可读性和安全性。final int x = 10; -
不可继承类: 当应用于类时,
final表示该类不能被继承,即该类是最终的,不能有子类。final class MyClass { // 类的定义 } -
不可覆盖方法: 当应用于方法时,
final表示该方法不能被子类覆盖(重写)。class Parent { final void myMethod() { // 方法的定义 } } class Child extends Parent { // 编译错误,无法覆盖 final 方法 // void myMethod() { } }
final 的使用有助于提高代码的稳定性、可读性和安全性。
4)final finally finalize 区别
final: 是 Java 关键字,用于声明一个常量、不可继承的类或者不可覆盖的方法。finally: 是 Java 中的异常处理关键字,用于在 try-catch 结构中执行一段代码块,无论是否发生异常都会执行,通常用于释放资源或清理操作。finalize: 是 Java 中的 Object 类的一个方法,用于在垃圾回收器将对象从内存中清理之前执行一些清理操作,但是不建议过度依赖它,因为无法保证何时会执行。
5)this 关键字的用法
this 是一个关键字,它表示对当前对象的引用。在 Java 中,this 可以用于以下几个方面:
-
引用当前对象的成员变量: 当成员变量与局部变量同名时,可以使用
this关键字来引用当前对象的成员变量。class MyClass { int x; void setX(int x) { this.x = x; // 使用 this 引用成员变量 x } } -
调用当前对象的其他方法: 可以使用
this关键字来调用当前对象的其他方法。class MyClass { void method1() { // 调用 method2 方法 this.method2(); } void method2() { // 方法的定义 } } -
在构造函数中调用另一个构造函数: 可以使用
this关键字来调用同一个类中的其他构造函数。class MyClass { int x; MyClass() { this(0); // 调用带参数的构造函数 } MyClass(int x) { this.x = x; } }
6)super 关键字的用法
super 是一个关键字,它表示对父类的引用。在 Java 中,super 可以用于以下几个方面:
-
调用父类的构造函数: 在子类的构造函数中可以使用
super关键字来调用父类的构造函数。class Parent { Parent(int x) { // 父类构造函数的定义 } } class Child extends Parent { Child(int x) { super(x); // 调用父类的构造函数 } } -
访问父类的成员变量或方法: 在子类中可以使用
super关键字来访问父类中的成员变量或方法。class Parent { int x; void display() { // 方法的定义 } } class Child extends Parent { void display() { super.display(); // 调用父类的 display 方法 System.out.println("Value of x: " + super.x); // 访问父类的成员变量 x } }
super 关键字主要用于处理继承关系中的一些场景,如调用父类的构造函数或访问父类的成员变量和方法。
7)this 与 super 的区别
-
this:-
this是一个引用,它指向当前对象的实例。主要用途包括:
- 引用当前对象的成员变量或方法。
- 在构造函数中调用同一个类中的其他构造函数。
- 作为方法的隐式参数传递给其他方法。
-
-
super:-
super也是一个引用,它指向父类的实例。主要用途包括:
- 调用父类的构造函数。
- 访问父类的成员变量或方法。
-
总的来说,this 主要用于引用当前对象的成员,而 super 主要用于访问父类的成员。
8)static 存在的主要意义
static 关键字在 Java 中有几个重要的用途:
- 共享变量:
static可以用来创建类变量,这些变量被类的所有实例共享。这意味着,无论创建了多少个类的实例,它们都共享相同的变量值。 - 独立于对象的方法:
static还可以用来创建类方法,这些方法不需要实例化类就可以被调用。这样的方法是与类相关联的,而不是与类的实例相关联的。 - 内部类的 static: 在内部类中,如果内部类被声明为静态的,则可以直接在外部类中使用,而不需要创建外部类的实例。
- 静态块: 可以使用静态块来执行静态初始化,它在类加载时执行,且仅执行一次。
9)static 的独特之处
static 的独特之处在于它的作用范围和生命周期:
- 作用范围:
static成员属于类,而不是属于类的任何特定实例。因此,它们对于类的所有实例都是相同的。 - 生命周期:
static成员存在于整个程序的生命周期中,它们在类被加载时创建,直到程序退出时才会销毁。与之相反,非静态成员是在创建类的实例时才会分配内存,并且随着对象的销毁而销毁。
10)static 应用场景
static 的应用场景包括但不限于:
- 常量声明: 将常量声明为
static final,以确保它们在整个程序中都是不可修改的。 - 共享变量: 将变量声明为
static,以便它们被类的所有实例共享。 - 工具方法: 将方法声明为
static,以便它们可以在不创建类实例的情况下直接调用。 - 单例模式: 在单例模式中,通过将构造函数私有化,并使用静态方法返回单例实例来确保只有一个类的实例存在。
- 静态类: 将嵌套类声明为
static,以便在不创建外部类实例的情况下直接使用。 - 静态块: 使用静态块执行静态初始化,例如加载驱动程序或初始化静态变量。
在这些场景中,static 关键字有助于提供一种有效的机制来管理共享状态和行为,并且可以在不创建类实例的情况下访问它们。
前后端项目 Gitee & Github 累计 3000+ Star,10W+浏览量!⭐点赞⭐收藏⭐不迷路!⭐
智能 AI 旅游推荐平台:https://github.com/luoye6/vue3_tourism_frontend
智能 AI 校园二手交易平台:https://github.com/luoye6/vue3_trade_frontend
GPT 智能图书馆:https://github.com/luoye6/Vue_BookManageSystem
更多推荐

所有评论(0)