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
- Java中final修饰参数的作用
- Java中final修饰参数的作用
- Java中final修饰参数的作用之一
- Java中final修饰参数的作用之一
- Java中final修饰参数的作用之一
- Java中方法用final修饰参数的作用
- Java —— final 修饰方法参数的作用
- final关键字 修饰参数的作用
- java中final修饰方法传入参数的影响
- Java中使用final修饰参数
- Java final修饰符的作用
- java 修饰符的作用二(final 修饰符) .
- java 方法的参数 使用 final修饰作用--- 防止方法体内部修改
- java中static和final修饰符作用
- java中final修饰的局部变量
- java中final修饰符的用法
- java中final修饰符的用法
- java中Final修饰符的使用
- Android RecyclerView调用notifyDataSetChanged方法无效的解决方法
- nvm安装和配置详细教程
- openmano 实验环境搭建
- 优秀博客
- [LeetCode] 135. Candy java
- Java中final修饰参数的作用
- 安卓按钮点击事件的四种写法
- Java运算符优先级
- Android VPN实现原理介绍
- Java实现简易爬虫--抓取酷安网用户头像
- ios调用系统地图时候的细节问题- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)l
- smmu 学习笔记之get_sgtable
- js 整除实现方法性能比较
- BigDecimal的精确计算