Java面试必考的关键字的用法汇总

 更新时间:2023年06月08日 09:23:01   作者:小威要向诸佬学习呀  
这篇文章主要为大家详细介绍了Java中的几种关键字相关知识,本文比较适合刚入坑Java的小白以及准备秋招的大佬阅读,需要的小伙伴快收藏起来吧

Java中的this关键字

Java 中的 this 关键字是一个引用类型变量,用于表示当前对象的引用。当方法中需要调用当前对象的成员变量或成员方法时,可以使用 this 关键字。

在 Java 类中,实例变量和局部变量可能会有相同的名称,因此使用 this 关键字可以区分它们。当代码中出现 this 关键字时,编译器会优先解析为实例变量,如果实例中不存在该变量,则解析为局部变量。

除了用于区分变量之外,this 关键字还可以用于以下几个方面:

1.在构造函数中调用其他的构造函数:

在类中定义多个构造函数时,可以使用 this 关键字来调用同一类中的其他构造函数,以达到代码重用的目的。如果在一个构造函数中调用另一个构造函数,必须将 this() 作为构造函数的第一条语句使用。

2.返回当前对象

在某些情况下,需要返回当前对象,可以使用 this 关键字来实现。例如,在链式编程中,每个方法调用都需要返回当前对象,这样可以使代码更加简洁明了。

3.传递当前对象给其他方法或构造函数

在调用其他方法或构造函数时,可以将当前对象作为参数传递给它们,以便其他方法或构造函数能够访问和操作当前对象。

Java中的super关键字

super 关键字用于访问父类中的成员变量、成员方法和构造方法,在子类中使用 super 关键字可以引用父类的成员。super 有以下几种用法:

访问父类的成员变量

public class Parent {
    public int x = 10;
}
public class Child extends Parent {
    public int x = 20;
    public void print() {
        System.out.println("Child x: " + x);
        System.out.println("Parent x: " + super.x);
    }
}
public static void main(String[] args) {
    Child child = new Child();
    child.print();
}

在上面的代码中,Child 类继承了 Parent 类,并声明了一个同名的 x 变量。通过 super.x 可以访问父类中的 x 值。

访问父类的成员方法

public class Parent {
    public void hello() {
        System.out.println("Hello from parent");
    }
}
public class Child extends Parent {
    public void hello() {
        super.hello();
        System.out.println("Hello from child");
    }
}
public static void main(String[] args) {
    Child child = new Child();
    child.hello();
}

在上面的代码中,Child 类重写了 Parent 类的 hello() 方法,使用 super.hello() 调用了父类中的方法并在子类中添加了自己的实现。

调用父类的构造方法

public class Parent {
    public Parent(int x) {
        System.out.println("Parent constructor with x = " + x);
    }
}
public class Child extends Parent {
    public Child() {
        super(10);
    }
}
public static void main(String[] args) {
    Child child = new Child();
}

在上面的代码中,Child 类调用了父类中的有参构造函数,使用 super(10) 可以传递参数给父类的构造方法。

需要注意的是,super 关键字必须放在子类构造方法的第一行,而且只能使用一次。同时,如果子类没有显式地调用父类的构造函数,Java 编译器会隐式地插入一个父类默认构造函数的调用语句。

Java中的static关键字

在Java中,static关键字可以用来修饰类的成员变量、方法和代码块。当用Static修饰类的成员时,它代表这个成员属于整个类,而不是某个对象实例。换句话说,无论创建多少个对象,静态成员只会被创建一次并共享。

下面我们来详细介绍Java中static关键字的几种用法:

静态变量

被static修饰的成员变量称为静态变量或者类变量。静态变量存储在静态存储区,不属于任何一个对象,仅在程序执行期间存在一份内存。除非显式地对它赋值,否则它默认被初始化为0或null。

public class Example {
    static int age;
    public static void main(String[] args){
        System.out.println(age);    //输出0
    }
}

静态方法

被static修饰的方法称为静态方法或类方法。它们被设计成仅与类本身有关联。静态方法中不能使用this和super关键字,因为它们都与具体的对象相关。既然静态方法不依赖于对象,所以它可以在没有任何实例的情况下被调用。

public class Example {
    public static void show(){
        System.out.println("This is a static method");
    }
    public static void main(String[] args){
        Example.show(); //无需实例化就可以调用Static方法
    }
}

静态代码块

静态代码块称为类初始化块,在类被加载时自动执行。它们仅能访问静态成员并支持使用static关键字来声明变量和方法。

public class Example {
    static{
        System.out.println("This is a Static Block");
    }
    public static void main(String[] args){
        System.out.println("Main method Executed..");
    }
}

上面是Java中对Static关键字的三种常见应用,但是我们在使用的过程中还需要注意以下几点:

静态方法只能访问到类变量和其他静态方法。

非静态方法可以访问到类变量,非静态变量,其他非静态方法和静态变量/方法。

Static方法不能以任何方式引用当前对象的实例。 不能在静态方法内部使用this关键字,或者向它传递任何参数。

Java中的final关键字

在Java中,final关键字可以用来修饰类、方法以及变量。它表示其修饰的内容不可改变,对于类、方法和变量分别有不同的含义:

1.final修饰类

被final修饰的类不能被继承,即该类不允许有子类。通常情况下使用final类是为了防止子类修改父类的行为,从而确保类的安全性和一致性。例如,在Java Collection Framework中的很多类都被声明为final。

final class Example {
    //....
}

2.final修饰方法

被final修饰的方法不能被子类重写,也就是说,该方法已经是最终实现。与final类一样,这种行为也能够有效保护代码的完整性和安全性。但需要注意的是,final方法并不一定要有方法体,因为它们可能只是一些接口规范。

class Example {
    public final void show(){
        System.out.println("This method is final and can't be overriden");
    }
}

3.final变量

被final修饰的变量称为常量,其赋值后不能再被修改。常量可以在运行时初始化,也可以在编译时通过直接赋值或构造函数进行初始化。Java开发人员通常将常量用于在程序中使用固定的数值或字符串。传统上我们推荐使用大写字母来表示常量。

final int AGE = 20;
final String NAME = "Xiaowei";

我们需要注意,当final变量引用一个对象时,只是意味着该变量不能在执行期间重新指向另一个对象,而并不阻止对象本身的状态被修改。

以上就是Java面试必考的关键字的用法汇总的详细内容,更多关于Java关键字的资料请关注脚本之家其它相关文章!

相关文章

  • Mybatis-Plus或PageHelper多表分页查询总条数不对问题的解决方法

    Mybatis-Plus或PageHelper多表分页查询总条数不对问题的解决方法

    PageHelper 这个插件用了很多次了,今天使用的时候才遇到一个问题,这篇文章主要给大家介绍了关于Mybatis-Plus或PageHelper多表分页查询总条数不对问题的解决方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • Java实现权重随机算法详解

    Java实现权重随机算法详解

    平时,经常会遇到权重随机算法,从不同权重的N个元素中随机选择一个,并使得总体选择结果是按照权重分布的。本文就详细来介绍如何实现,感兴趣的可以了解一下
    2021-07-07
  • SpringBoot部署xxl-job方法详细讲解

    SpringBoot部署xxl-job方法详细讲解

    XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展,这篇文章主要介绍了springboot整合xxl-job流程,需要的朋友可以参考下
    2023-01-01
  • Springboot如何使用YML文件配置多环境

    Springboot如何使用YML文件配置多环境

    这篇文章主要介绍了Springboot如何使用YML文件配置多环境问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 一文彻底弄懂spring boot自动配置的过程(推荐)

    一文彻底弄懂spring boot自动配置的过程(推荐)

    SpringBoot的自动配置机制通过@SpringBootApplication注解作为起点,结合@EnableAutoConfiguration和spring.factories文件,实现了基于类路径依赖、环境配置和自定义代码的智能化配置,感兴趣的朋友跟随小编一起看看吧
    2024-10-10
  • 关于Java内存访问重排序的研究

    关于Java内存访问重排序的研究

    文章主要介绍了重排序现象及其在多线程编程中的影响,包括内存可见性问题和Java内存模型中对重排序的规则
    2025-01-01
  • java 内嵌Groovy动态脚本操作

    java 内嵌Groovy动态脚本操作

    这篇文章主要介绍了java 内嵌Groovy动态脚本操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java实现注册邮箱激活账户实例代码

    Java实现注册邮箱激活账户实例代码

    本篇文章主要介绍了Java实现邮箱激活账户实例代码,这里整理了详细的代码,具有一定的参考价值,有需要的小伙伴可以参考下。
    2017-07-07
  • Springboot集成graylog及配置过程解析

    Springboot集成graylog及配置过程解析

    这篇文章主要介绍了Springboot集成graylog及配置过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • 通过JDK源码分析关闭钩子详解

    通过JDK源码分析关闭钩子详解

    一个简单的关闭钩子,程序被中断或者正常退出时会显示 hook shutdown!非常的优雅,有效,巧妙。那么这篇文章就来给大家介绍关于通过JDK源码分析关闭钩子的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴。
    2017-11-11

最新评论