Java中final修饰参数的作用

来源:互联网 发布:embed js控制声音大小 编辑:程序博客网 时间:2024/05/18 17:23

1、

final 修饰在变量上,说明这个变量的值不能修改
final 修饰在方法上,说明这个方法在继承后不能覆盖.
final 修饰在类上,说明这个类为终态,不能被继承了.


2、final类型修饰的参数分为两种类型:基本类型 与 引用类型

参考:http://www.cnblogs.com/lan0725/archive/2013/05/24/3097573.html

(1) 在调用的参数内部,无论是基本类型还是引用类型,其值不可改变(引用类型指的引用对象不变)

(2) 引用类型中属性可变

@ final修饰基本类型(int,double,...)时,值不能改变:例final int a = 6,a 的值就是6,不能改;
@ final修饰引用类型时,引用类型变量的地址值
不可被修改。但如果final修饰的是对象类型那么则不能将其他对象赋值给它,但它所指向的对象内部的值是可变的,如:

class BB{    public int i;}class PP{public static void f(final BB ref) // ref不能修改(程序传递的是引用,也就是地址,所以你的地址不能修改){ref.i = 55;}public static void main(String args[]){BB x = new BB();f(x);System.out.println(x.i);  // i可以修改}}

很容易理解:final表示输入的值不能再被修改

像上面的例子,如果你想改变ref的引用地址是错误的,如:ref = new BB()或ref = null是错的,但可以改变ref引用对象的值,如ref.i = 2;

总结:对于基本类型,不可变指的是值
   对于引用类型,不可变指的是引用地址 

public class Test{  int a = 0;  public static void main(String[] args)  {    final int i = 10;    i = 11;//错,final的基础类型值不可变。    Test t = new Test();    t = new Test();//错,不能将另一对象赋值给final变量。     t.a = 1;//对,可以修改对象的内部值。  }}
3、Example:

//: c12:DirList2.java// Uses anonymous inner classes.// {Args: "D.*\.java"}import java.io.*;import java.util.*;import java.util.regex.*;import com.bruceeckel.util.*;public class DirList2 {  public static FilenameFilter filter(final String regex) {    // Creation of anonymous inner class:    return new FilenameFilter() {      private Pattern pattern = Pattern.compile(regex);      public boolean accept(File dir, String name) {        return pattern.matcher(          new File(name).getName()).matches();      }    }; // End of anonymous inner class  }  public static void main(String[] args) {    File path = new File(".");    String[] list;    if(args.length == 0)      list = path.list();    else      list = path.list(filter(args[0]));    Arrays.sort(list, new AlphabeticComparator());    for(int i = 0; i < list.length; i++)      System.out.println(list[i]);  }} ///:~ 注意,filter( )的参数必须是final的。要想在匿名内部类里使用其作用域之外的对象,只能这么做。

参考:

http://blog.csdn.net/tavor/article/details/1920336

http://www.jb51.net/article/43423.htm

http://www.cnblogs.com/xiaorenwu702/p/5167997.html

http://www.cnblogs.com/lwbqqyumidi/p/3513047.html

http://feiyeguohai.iteye.com/blog/1500108

http://www.importnew.com/7553.html





0 0
原创粉丝点击