Java中final修饰参数的作用

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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值