绝想首页

JAVA V1

Bonn [甜蜜] 2013-03-04 05:54:46 星期一 晴天 查看:89 回复:0 发消息给作者

java中的final用法:

 final在Java中并不常用,然而它却为我们提供了诸如在C语言中定义常量的功能,不仅如此,final还可以让你控制你的成员、方法或者是一个类是否可被覆写或继承等功能,这些特点使final在Java中拥有了一个不可或缺的地位,也是学习Java时必须要知道和掌握的关键字之一。
final成员
当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可再变。其初始化可以在两个地方,一是其定义处,也就是说在final变量定义时直接给其赋值,二是在构造函数中。这两个地方只能选其一,要么在定义时给值,要么在构造函数中给值,不能同时既在定义时给了值,又在构造函数中给另外的值。下面这段代码演示了这一点:

import java.util.List; import java.util.ArrayList; import java.util.LinkedList; public class Bat{     final PI=3.14;          //在定义时便给址值     final int i;            //因为要在构造函数中进行初始化,所以此处便不可再给值     final List list;        //此变量也与上面的一样     Bat(){         i=100;         list=new LinkedList();     }     Bat(int ii,List l){         i=ii;         list=l;     }     public static void main(String[] args){         Bat b=new Bat();         b.list.add(new Bat());         //b.i=25;         //b.list=new ArrayList();         System.out.println("I="+b.i+" List Type:"+b.list.getClass());         b=new Bat(23,new ArrayList());         b.list.add(new Bat());         System.out.println("I="+b.i+" List Type:"+b.list.getClass());     } }


此程序很简单的演示了final的常规用法。在这里使用在构造函数中进行初始化的方法,这使你有了一点灵活性。如Bat的两个重载构造函数所示,第一个缺省构造函数会为你提供默认的值,重载的那个构造函数会根据你所提供的值或类型为final变量初始化。然而有时你并不需要这种灵活性,你只需要在定义时便给定其值并永不变化,这时就不要再用这种方法。在main方法中有两行语句注释掉了,如果你去掉注释,程序便无法通过编译,这便是说,不论是i的值或是list的类型,一旦初始化,确实无法再更改。然而b可以通过重新初始化来指定i的值或list的类型,输出结果中显示了这一点:
I=100 List Type:class java.util.LinkedList
I=23 List Type:class java.util.ArrayList

顶一下(33 写日记 1166982 225598
分享排行

 

 

留住已经逝去的峥嵘岁月 记住曾经绽现的万种风情 在记忆即将淡漠的时候 来把这些重新回味

Copyright (C) 2008-2014 www.juexiang.com, All Rights Reserved.

京ICP备2023001011号-3   京公网安备11010802011908号

客服QQ 1017160561 违法和不良信息举报电话 13148464312 邮箱 1017160561@qq.com