final类型修饰的参数分为两种类型 基本类型 与引用类型
参数加final
1、斯坦福教授说的好,方法可以比喻成一台机器(面包机),没错,在我的机器(方法)里面,我要的参数加了final(要原料),你给我传过来的参数,机器里面就无法改了,也就是说在机器里的这个参数,一直指向的都是你传进来的参数。
public class FinalNBA {
public static void main(String args[]) {
Curry curry = new Curry();
curry.setSmallName("small student");
printAll(curry);
System.out.println(curry);
}
public static void printAll(final Curry temp){
temp.setSmallName("fk do it");
System.out.println(temp.getSmallName());
// temp = new Curry(); 传送进来的Curry引用是final,不可以再赋值了,这里一定会报错哦!
}
}
2、总结,无论参数是基本数据类型,还是引用数据类型,只要加了final,不好意思,该参数不可以再赋值(实参传进来给形参,就相当于初始化完成)。。。。可以防止在方法里面不小心重新赋值,造成一些不必要的麻烦!!!
3、不加final的参数,可能会出现的错误是
public static void printAll(Curry temp){
temp = new Curry(); //这就是出现的问题,又new了一个库里,与调用该方法时传进来的库里毫无关系了!!
temp.setSmallName("fk do it");
System.out.println(temp.getSmallName());
}
最后关于final修饰的变量是引用不能改变还是引用的对象不能改变:https://blog.csdn.net/i_am_tomato/article/details/46762081