java中常量final的用法_详解Java中final的用法

本文主要介绍了Java中final的使用方法,final是java的关键字,本文就详细说明一下它的使用方法,需要的朋友可以参考下

概念

final 具有“不可改变的”的含义,可以修饰 非抽象类、非抽象成员方法和变量。

用 final 修饰的类不能被继承,没有子类。

用 final 修饰的方法不能被子类的方法覆盖(重写)。

用 final 修饰的变量表示常量,只能被赋一次值(声明变量的时候)。

注:

final 不能用来修饰构造方法,因为“方法覆盖”这一概念仅适用于类的成员方法,而不适用于类的构造方法,父类的构造方法和子类的构造方法之间不存在覆盖的关系,因此用final修饰构造方法没有任何意义。

父类中用 private 修饰的方法不能被子类的方法所覆盖,因此可以理解为 private 类型的方法默认是 final 类型的。

final 类

把类定义为 final,使这个类不能被继承。具体使用场景如下:

不是专门为继承而设计的类,类本身的方法之间有复杂的调用关系。如果随意创建这些类的子类,子类有可能会错误的修改了父类的实现细节。

处于安全的原因,类的实现细节不允许在被扩展。

在创建对象模型时,确信这个类不会再被扩展。

例如:JDK中的java.lang.String 类被定义为 final 类型。

public final class String{...}

final 方法

在某些情况下,出于安全原因,父类不允许子类覆盖某个方法,此时可以把这个方法声明为 final 类型。

例如:JDK中的java.lang.Object 类中,getClass()方法为 final 类型,而 equals() 方法不为 final 类型。

所有 Object 的子类都可以覆盖 equals() 方法,但不能覆盖 getClass() 方法。

final 变量

用 final 修饰的变量表示取值不会改变的常量。

例如:JDK中 java.lang.Integer 类中定义了两个常量。

public static final int   MIN_VALUE = 0x80000000;

public static final int   MAX_VALUE = 0x7fffffff;

final 变量具有以下特征:

final修饰符可以修饰静态变量、成员变量和局部变量,分别表示静态常量、实例常量和局部常量。

public class Demo{

public static final int MAX_VALUE = 23; //静态常量

public static final int MIN_VALUE = 10; //静态常量

private final Date birthday = new Date(); //成员常量

}

静态常量一般以大写字母命名,单词之间以“_”符号分开。

final修饰的成员变量必须初始化。

public class FinalTest {

final int a = 1; //成员常量 默认初始化

static final int b = 2; //静态常量 默认初始化

final int c; //成员常量

static final int d; //静态常量

public FinalTest(){

c = 3; //成员常量 未默认初始化,可在构造函数中初始化

}

static {

d = 4; //静态常量 未默认初始化,可在静态代码块中初始化

}

}

final 变量只能赋一次值,如果将引用类型的变量用 final 修饰,该变量只能始终引用一个对象,但可以改变对象的内容。

public class FinalTest {

String str = "";

public void print(){

System.out.println(str);

}

public static void main(String[] args){

final FinalTest finalTest = new FinalTest();

finalTest.str = "xixihaha";

finalTest.print();

}

}

总结:

实际程序中,通过 final 修饰符来定义常量,目的为:

提高程序的安全性。

提高代码可维护性。

提供代码可读性。

以上就是本文的全部内容,希望对大家的学习有所帮助。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值