关于用“final“修饰方法中的形参 - GongSoSn/Renjianyong GitHub Wiki
1.当方法中的形参是基本数据类型:
/**
* final修饰形参
*/
public void finalModiDeclare(int i) {
// 可能是有意或者是无意对i进行修改
i++;
System.out.println(i);
}
@Test
public void finalModiTest() {
// 声明并初始化变量
int temp = 9;
// 方法调用
this.finalModiDeclare(temp);
// 方法调用之后输出temp
System.out.println(temp);
}
但是:如下
public void finalModiDeclare(final int i) {
// 可能是有意或者是无意对i进行修改
i++;//编译不会通过
System.out.println(i);
}
总结:对于方法参数的传递,无非是涉及到两种传递方法 ①值传递(方法调用前后不会改变作为方法参数的数,但是可以在被调用的方法中处理参数)② 引用传递(方法调用的前后引用的地址是不会发生改变的只是可能通过引用对引用地址对应的实际对象的属性进行修改)
code:
public void test(Person per){
per = new Person;//编译通过,没问题
}
public void test(final Person per){
per = new Person;//编译不能通过(传递过来的引用已经指向了其它的对象,也就是说:引用已经改变(引用--对象 一对一个关系变化))
}