华恩JAVA班第20天

xiaoxiao2021-02-28  63

华恩JAVA班第20天

 根据上下文环境,java的关键字final也存在着细微的区别,但通常指的是“这是无法改变的。”不想改变的理由由两种:一种是效率,另一种是设计。由于两个原因相差很远,所以关键子final可能被吴用。

  接下来介绍一下使用到fianl的三中情况:数据,方法,类。

 

final(最终)是一个修饰符 1.final可以修饰类,函数,变量(成员变量,局部变量) 2.被final修饰后的类不可以被其他类继承 3.被final修饰后的函数不可以被重写 4.被final修饰后的变量不允许被再次赋值,final在对变量进行 修饰时一定要赋值,被final修饰的变量称为常量

注意:常量的命名规范:字母全部大写,如果这个名字是由多个单词组成, 在单词之间用 _ 隔开

  

   final数据

   许多编程语言都有某种方法,来向编译器告知一块数据是恒定不变的。有时数据的恒定不变是很有用的,例如:

1,一个编译时恒定不变的常量

2,一个在运行时初始化,而你不希望它被改变。

  对于编译期常量的这种情况,编译器可以将该常量值代入任何可能用到它的计算式中,也就是说,可以在编译期就执行计算式,这减轻了一些运行时的负担。在java中,这类常量必须是基本类型,并且以final表示。在对这个常量定义时,必须进行赋值。

  一个即是static又是fianl的域只占一段不能改变的存储空间。

  当final应用于对象引用时,而不是基本类型时,其含义有些让人疑惑。对基本类型使用fianl不能改变的是他的数值。而对于对象引用,不能改变的是他的引用,而对象本身是可以修改的。一旦一个final引用被初始化指向一个对象,这个引用将不能在指向其他对象。java并未提供对任何对象恒定不变的支持。这一限制也通用适用于数组,它也是对象。

 根据上下文环境,java的关键字final也存在着细微的区别,但通常指的是“这是无法改变的。”不想改变的理由由两种:一种是效率,另一种是设计。由于两个原因相差很远,所以关键子final可能被误用。

  接下来介绍一下使用到fianl的三中情况:数据,方法,类。

  

   final数据

   许多编程语言都有某种方法,来向编译器告知一块数据是恒定不变的。有时数据的恒定不变是很有用的,例如:

1,一个编译时恒定不变的常量

2,一个在运行时初始化,而你不希望它被改变。

  对于编译期常量的这种情况,编译器可以将该常量值代入任何可能用到它的计算式中,也就是说,可以在编译期就执行计算式,这减轻了一些运行时的负担。在java中,这类常量必须是基本类型,并且以final表示。在对这个常量定义时,必须进行赋值。

  一个即是static又是fianl的域只占一段不能改变的存储空间。

  当final应用于对象引用时,而不是基本类型时,其含义有些让人疑惑。对基本类型使用fianl不能改变的是他的数值。而对于对象引用,不能改变的是他的引用,而对象本身是可以修改的。一旦一个final引用被初始化指向一个对象,这个引用将不能在指向其他对象。java并未提供对任何对象恒定不变的支持。这一限制也通用适用于数组,它也是对象。

 

public class B3 {      staticRandom r =new Random(12);      final intint1= r.nextInt(100);//产生0-99的随机数      static finalint INT_2= r.nextInt(100);              publicstatic void main(String[] args) {         B3 b1=new B3();         System.out.println("int1:"+b1.int1+"   INT_2:"+b1.INT_2);         B3 b2=new B3();         //b2.INT_2=100;//错误的赋值         System.out.println("int1:"+b2.int1+"   INT_2:"+b2.INT_2);       }  }

转载请注明原文地址: https://www.6miu.com/read-75727.html

最新回复(0)