Java 方法使用final 修饰参数的作用
在方法参数前面加final关键字就是为了防止数据在方法体中被修改。
主要分两种情况:
第一,用final修饰基本数据类型;
第二,用final修饰引用类型。
第一种情况,修饰基本类型(非引用类型)。这时参数的值在方法体内是不能被修改的,即不能被重新赋值。否则编译就通不过。例如:
public class TestFinal {
public void testBaseType(final int i){
int n = i;
i = 9; //编译报错
System.out.println("i = "+i);
System.out.println("n = "+n);
}
第二种情况,修饰引用类型,这时可以改变值,但是不能重新赋值,引用类型变量所指的引用是不能够改变的,但是引用类型变量的值是可以改变的
public void testReferenceType(final Student stu){
stu.setName("hoover");
stu.setAge(25);
System.out.println(stu.toString());
Student stu1 = new Student();
stu = stu1 ; //编译报错
}
public void testReferenceType1(Student stu){
stu.setName("hoover");
stu.setAge(25);
System.out.println(stu.toString());
Student stu1 = new Student();
stu = stu1 ;
}
class Student{
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
}