java关于final和static相关面试题开胃菜第二弹

Java中的final关键字的作用是什么?它有哪些应用场景?

在Java中,final关键字用于声明不可变变量、方法和类。它主要有以下三种作用:

  1. 声明不可变变量:使用final关键字声明的变量必须在其初始化之后保持不变。一旦被赋值后,该变量的值就不能再被修改。例如:

    final int MAX_VALUE = 100;

    在这个例子中,MAX_VALUE是一个final变量,它的值为100,并且在程序运行期间不能被修改。

  2. 声明不可变方法:使用final关键字声明的静态方法不能被子类重写。例如:

    public final static int getMaxValue() {  
        return MAX_VALUE;  
    }

    在这个例子中,getMaxValue()方法是一个final静态方法,它返回final变量MAX_VALUE的值,不能被子类重写。

  3. 声明不可变类:使用final关键字声明的类不能被继承。例如:

    public final class ImmutableNumber {  
        private int value;  
      
        public ImmutableNumber(int value) {  
            this.value = value;  
        }  
      
        public int getValue() {  
            return value;  
        }  
    }

    在这个例子中,ImmutableNumber类是一个final类,它不能被继承。它的值是不可变的,因为它是私有的,只能通过公共的getValue()方法访问。

    应用场景方面,final关键字主要应用于确保代码的稳定性和安全性。例如,在多线程环境下,使用final关键字可以确保共享变量的值不会被多个线程同时修改,从而避免了竞态条件和线程安全问题。另外,final关键字还可以防止程序员错误地修改代码中的某些关键设置,从而提高了代码的可靠性。

Java中的static关键字的作用是什么?它有哪些应用场景?

在Java中,static关键字用于声明静态变量、静态方法和静态代码块。它们都属于类级别的而非实例级别的,即与类一起被创建和销毁,而不是与类的每个实例一起被创建和销毁。

static关键字的作用如下:

  1. 声明静态变量:静态变量属于类而不属于实例,所有类的实例都共享同一份静态变量。静态变量可以通过类名直接访问,而不需要创建实例。

    public class MyClass {  
        public static int staticVar = 10; // 静态变量  
        public int instanceVar; // 实例变量  
    }
  2. 声明静态方法:静态方法属于类而不属于实例。静态方法不依赖于任何实例,可以通过类名直接调用。静态方法内不能访问实例变量或方法,只能访问静态变量和静态方法。

    public class MyClass {  
        public static void staticMethod() { // 静态方法  
            // ...  
        }  
        public void instanceMethod() { // 实例方法  
            // ...  
        }  
    }
  3. 声明静态代码块:静态代码块在类加载时执行,只会执行一次。它可以初始化静态变量和静态方法。静态代码块可以用于执行只需执行一次的初始化操作。

    public class MyClass {  
        public static int staticVar; // 静态变量  
        static {  
            // 静态代码块  
            staticVar = 10; // 静态变量的初始化  
        }  
    }

应用场景:

  1. 常量:使用static final声明常量,所有类的实例都共享同一份常量。
  2. 类级别的共享资源:使用static声明静态变量和静态方法,实现类级别的共享资源,所有类的实例都共享同一份资源和操作。
  3. 类级别的初始化操作:使用static块初始化静态变量,实现类级别的初始化操作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农落落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值