1.传参时的final。
有些人说如果想防止别人修改就加一个final,但其实有时也未必需要,如果别人的是 基本数据类型或是String,其实加final就没有必要了,因为在别人不可能修改你原来的参数的值,而且别人有时还可以重复利用当前变量。
如 :
public static int addValue (int value){
return ++value;
}
这里的 int value如果加了final 这样写就会报错了,而且加final和不加其实效果基本上一样,因为方法之外你的value其实不会改变。
但对于引用类型,如类对象传递,在不希望别人修改引用 的时候就需要加final
如:
public static void modfiyName(Person person){
person.setName("my name");
//但别人可能确实可以如下注释写法
//person = new Person();
//person.setName("my name");
//如果加了final不能再new
}
以上就被改了引用,person就不是原来的person了。
总结:(1).当如果是传基础数据类型时,最好不加final;
(2).如果传的是引用类对象,且不希望改动引用地址时需加final。
2.关于类和方法中的final。
为什么要把类和方法合并在一起讲呢,原因是因为与继承有关系。
(1)如果整个类不希望别人继承,那在类中加final修饰,如果这样,方法中就不需要再加final了,因为不必要多此一举了.
(2)如果只希望某个方法不允许继承,那么只需要在方法中加final即可。