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