在Java中,为什在定义常量中要加修饰符final?到底起啥作用呢,能不能不加?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java中,为什在定义常量中要加修饰符final?到底起啥作用呢,能不能不加?相关的知识,希望对你有一定的参考价值。

  用final修饰的成员变量表示常量,值一旦给定就无法改变!  final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。  从下面的例子中可以看出,一旦给final变量初值后,值就不能再改变了。  另外,final变量定义的时候,可以先声明,而不给初值,这中变量也称为final空白,无论什么情况,编译器都确保空白final在使用之前必须被初始化。但是,final空白在final关键字final的使用上提供了更大的灵活性,为此,一个类中的final数据成员就可以实现依对象而有所不同,却有保持其恒定不变的特征。 参考技术A 一个标记而已,那天你创造一门语言也可以用“常量”修饰或者什么什么的。但是不加Final你怎么知道某个变量是常量,你都分不清计算机就更不可能分清 参考技术B final是Java中定义常量的关键字,要定义一个常量,必须加上它。一个常量只能在初始时赋值一次,不允许多次赋值。一般把固定的东西设成常量,如圆周率等,因为它只允许在初始时赋值一次,而不允许多次赋值,就可以有效的防止程序员犯逻辑错误 参考技术C 定义常量有三个修释符..在接口中可省略.

java-final修饰符

1、修饰类:类不能被继承。

 

2、修饰变量:变量就成了常量,只能被赋值一次。

  (常量命名规范:如果是一个单词,所有字母大写;如果是多个单词,每个单词都大写,中间用下划线隔开。)

  (final修饰变量叫做常量,一般会与public static公用。

 

3、修饰方法:方法不能被子类重写。

 

注:

 -  final修饰基本类型:是值不能被改变。

  (注意在方法声明上使用final修饰参数时,参数中被final修饰的变量可以在方法调用时重新赋值。其实这是因为,上一次调用的方法执行完就被弹栈了,所以每次调用方法传入参数的时候,都相当于是一个“新”的方法入栈。因此能够不报错,而且还能改变变量的值。)

 

1 public void method(final int x){
2     System.out.println(x);
3 }
4 
5 method(10);  //合法
6 method(20);  //合法

 

 

 -  final修饰引用类型:是地址值不能被改变,对象中的属性可以改变。

 

1 class Person {
2     ...
3 }
4 
5 final Person p=new Person("张三",23);
6 //p=new Person("李四",24);  //这么写报错,因为被final修饰的对象所指向的地址值不能改变
7 p.setName("李四");  //可以改变对象中的属性值
8 p.setAge(24);  //可以改变对象中的属性值

 

以上是关于在Java中,为什在定义常量中要加修饰符final?到底起啥作用呢,能不能不加?的主要内容,如果未能解决你的问题,请参考以下文章

java-final修饰符

java中 static 表示静态 final表示常量?怎么使用的

java final .static修饰符

JAVA语言中,啥是变量,如何定义一个变量?啥是常量?

Java之非访问修饰符

Java之非访问修饰符