这篇文章将为大家详细讲解有关最后一关键字在java中的作用有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
1)最后的数据
对于编译时常量这种情况,编译器可以把常量带入计算中,可以减少了一些运行时的负担,在java中,这类常量必须是基本类型,而且用关键字最后修饰。你必须在定义常量的时候进行赋值。
带有恒定初始值的最后一个静态的基本变量(即编译时常量)命名全部使用大写,单词之间用下划线分隔。
一个被静态和最终同时修饰的属性只会占用一段不能改变的存储空间。
引用>当用最后修饰对象引用而非基本类型时,
<李>
对于基本类型,最终使数值恒定不变。
李> <李>对于对象引用,最终使引用恒定不变。
李>
一旦引用被初始化指向了某个对象,它就不能改为指向其他对象。但是,对象本身是可以修改的,java没有提供将任意对象设为常量的方法。(你可以自己编写类达到使对象恒定不变的效果)这一限制同样适用数组,数组也是对象。
示例:
import java.util。*; class Value  { int 才能;我; 价值才能(int 我),{ ,,,this.i =,我; ,,} }/* * ,* @author Limh ,*/public class  FinalData { private 才能static Random  rand =, new 随机(47); private 才能String id; public 才能FinalData (String id), { ,,,this.id =, id; ,,} private 才能final int  valueOne =, 9; private 才能static final  int VALUE_TWO =, 99; public 才能static final  int VALUE_THREE =, 39; private 才能final int  i4 =, rand.nextInt (20); static 才能final int  INT_5 =, rand.nextInt (20); private 才能Value v1 =, new 价值(11); private 才能final Value  v2 =, new 价值(22); private 才能static final  Value VAL_3 =, new 价值(33); private 才能;final  int [], a =, {1, 2, 3, 4, 5, 6}; @Override才能 public 才能;String  toString (), { ,,,return id +,,:,“, +,“i4 =,,, +, i4 +,,,, INT_5 =,,, +, INT_5; ,,} public 才能;static  void main (String [], args), { ,,,FinalData fd1 =, new FinalData (“fd1"); ,,,//v2=new 价值(22); ,,,fd1.v2.i + +; ,,,fd1.v1 =, new 价值(9); ,,,//a.length =6 ,,,for (int 小姐:=,0;,小姐:& lt;, fd1.a.length;,我+ +),{ ,,,,,fd1.a[我]+ +; ,,,} ,,,System.out.println (fd1); ,,,System.out.println (“Creating new FinalData"); ,,,FinalData fd2 =, new FinalData (“fd2"); ,,,System.out.println (fd1); ,,,System.out.println (fd2); ,,} }输出:
fd1:, i4 =, 15日,INT_5 =18 Creating new  FinalData fd1: i4 =, 15日,INT_5 =18 fd2: i4 =, 13日,INT_5 =,18因为第一个变量和第二个变量都是带有编译时值的最后基本类型,它们都可用作编译时常量,没有多大区别。第三个变量是一种更加典型的常量定义的方式:公众意味着可以在包外访问,静态强调只有一个,最后一个说明是一个常量。
正如你在main()中所见,v2是最终的并不意味着你不能修改它的值,因为它是引用,所以只是说明它不能指向一个新的对象。
2)空白最后
空白最后指的是没有初始化值的最终属性。
编译器确保空白最终在使用前必须被初始化。这样既能使一个类的每个对象的最终属性值不同,也能保持它的不变性。
你必须在定义时或在每个构造器中执行最后变量的赋值操作。这保证了最终属性在使用前已经被初始化过。
3)最终参数
在参数列表中,将参数声明为最终意味着在方法中不能改变参数指向的对象或基本变量:
class Gizmo { public 才能;void 旋转(),{ ,,} }/* * ,* @author Limh ,*/public class  FinalArguments { void 才能;(final Gizmo g), { ,,,//-g =, new 小发明(),, ,,,//,Illegal ——g is 最后 ,,} void 才能;没有(Gizmo g), { ,,,g =, new 小发明();,//,OK ——, g is not 决赛 ,,,g.spin (); ,,}//才能void f (final int i),{,我+ +;},//,停下来# 39;t 改变//才能,你还要only read 得到a final 原始 int 才能;g (final int i), { ,,,return 小姐:+,1; ,,} public 才能;static  void main (String [], args), { ,,,FinalArguments bf =, new FinalArguments (); ,,,bf.without(空); ,,,bf.with(空); ,,} null最后一关键字在java中的作用有哪些