java中final的用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中final的用法相关的知识,希望对你有一定的参考价值。
错在哪里了,怎么改
最终在Java中是不常见的,但它为我们提供的功能,例如在C语言中,常量的定义不仅如此,最终也允许你控制你的成员,方法或类是否可以被覆盖或继承功能,这些特点使得最终有在Java中一个不可缺少的角色,我们必须知道,当主键也学习Java。类的,当你在关键字前面定义的变量加上最后的时候最后一个成员,也就是说,这个变量将不被一旦被初始化的改变,其中的含义不可变的基本类型其值是不可变的,它的对象的引用变量不再改变。其初始化可以在两个地方,一个在它的定义,那就是直接说给他们的任务在最后的变量定义,二是在构造函数中。这两个地方只能选其一,要么在定义中给定的值,要么在构造函数的值不能同时在定义给定值,并在构造函数中的另一个值。下面的代码演示了这一点:
进口的java.util.List;
进口的java.util.ArrayList;
进口java.util.LinkedList中;
公共类蝙蝠
最后PI = 3.14; / /在定义将使索引值
最终诠释我; / /因为在构造函数中进行初始化,所以在这里我们不能给出一个值
最终名单列表; / /该变量也与上述相同的
蝙蝠()
I = 100;
列表=新的LinkedList();
蝙蝠(INT二,表L)
I = II;
列表= 1;
公共静态无效的主要(字串[] args)
蝙蝠B =新的蝙蝠();
b.list.add(新蝙蝠());
/ / BI = 25;
/ / b.list =新的ArrayList();
System.out.println(“i =”+双+“列表类型:”+ b.list.getClass());
B =新的蝙蝠(23,新的ArrayList());
b.list.add(新蝙蝠());
System.out.println(“i =”+双+“列表类型:”。+ b.list的getClass());
这个程序是非常简单的一个常规用法最终的演示。这里初始化使用构造方法,它可以让你有一点点的灵活性。如果两个重载的构造函数蝙蝠所示,第一个缺省构造函数提供默认值?你,重载的构造函数,根据最终的值初始化变量或键入你所提供的。然而,有时你并不需要这种灵活性,你只需要在给定的时间定义它并不会改变它的值,那么你将无法使用此方法。有在main方法中陈述两行被注释掉了,如果你去掉注释,程序将无法编译,这就是说,无论是类型的值或列表我,一旦初始化,确实无法改变。然而,你可以通过重新初始化指定的双值或列表的类型,输出显示:
我= 100名单类型:类java.util.LinkedList
I = 23名单类型:java的类。util.ArrayList
另一个用途是定义方法的参数是最终的,基本类型的变量,这种没有任何实际意义,因为基本类型的变量,当调用方法是按值传递,这意味着你可以在这个参数变量的方法改变不影响调用语句,但对于对象变量,但它是非常有用的,因为对象是通过变量来传递它的引用,让你在一个方法改变对象的变量也当你需要一个对象变量改变作为方法的参数,使用最终明确宣告影响通话声明对象变量,它会防止你无意的影响到调用方法。
在内部类中方法参数的变量时使用另一种方法来更改这个参数也必须声明为final在使用前,如下面的代码所示:
公共类INClass
无效,将InnerClass (最终字符串str)
类的iCLASS
iCLASS非()
System.out.println(STR);
iCLASS非IC =新的iCLASS();
公共静态无效的主要(字串[] args)
INClass INC =新INClass();
inc.innerClass(“你好”;);
最后进近
该方法声明为final,那就说明你已经知道这个方法提供的功能已经可以满足你的要求,不需要进行扩展并且不会允许任何类,从这个类继承重写此方法,但你仍然可以继承此方法的继承,可以直接使用。另外还有一个已知的机制,内联,它会使你的时候你直接调用的最后一个方法,方法体到呼叫时,而不是常规的方法调用,例如保存一个断点,推等,这可能但是让你的程序效率有所提高,当你接近拍摄对象是非常大的,或者如果你在很多地方调用此方法,那么你的代码会调用身体的迅速扩张,但可能会影响效率,所以你应该慎用最后进用该方法定义。
最后一类是最终当你的身体在课堂中使用时,您需要仔细考虑,因为一个final类不能被任何人继承,这也意味着这样的继承树是叶类,而这样的设计已经考虑完善,而不需要或扩展。对于最终的类成员,您可以将其定义为final,可能不会被最终确认。因为他们的级决赛之间的关系作为法,自然成了最后的类型。您也可以扫清道路,以最后final类,但它显然没有任何意义。
下面的程序演示了final方法和final类的用法:
最终级决赛
最后的字符串str =“最终数据”;
公共字符串STR1 =“非最终数据”;
最后的公共无效的print()
System.out.println(“最后一个方法。”);
公共无效是什么() System.out.println(STR +“\ n”+ str1的);
公共类FinalDemo / /最后的延伸不能继承
公共静态无效的主要(字串[] args)
最终F =新的最终();
f.what();
f.print();
由于可以从程序中可以看出,使用final类和普通类是几乎没有区别,但它失去了继承的特性。最后的方法不同于非final方法很难从程序网上看到,只记得小心。
最终应用在设计模式
在设计模式中的模型,称为不变的模式,java中可以很容易地通过final关键字实现这个模型,用来解释它的最终成员程序时Bat.java是一个常数模式实例。如果你有兴趣,你可以参考燕洪波谁写的“Java与模式”一书来解释。 参考技术A NUM少了 int 类型本回答被提问者采纳
以上是关于java中final的用法的主要内容,如果未能解决你的问题,请参考以下文章