不可以,Java中全是值调用,方法得到的是所有参数值的一个拷贝,对于基本数据类型和String类,如果有方法类似
method(fina int i)
{
//code.....
},或者
method(final String s)
{
//code...
}就相当于:
method()
{
final int i;
//code...
}和
method(){
final String s
//code...
},
java中final修饰的变量是常量,常量必须在定义时初始化且不可更改,所以
method(final int i )
{
i++; //编译不通过,报错
},final String s 类似,
对于自定义的引用数据类型,区别如下:
public class Person{
String name = "李四";
int age = 20;
public void updat1(Person p) {
p.name="张三"; //没有final修饰,程序正确
p.age = 34;
}
public void updat2(final Person p) {
p.name="张四"; //程序正确,final修饰的变量指 该变量的引用不变,而引用指向的对象的属性内容是可以改变的
p.age = 30;
}
public void updat3(final Person p) {
// p = new Person(); //程序错误,该引用指向了另一个内存空间
}
}
所以final修饰引用数据类型时,只能保证该变量的引用不变,而该引用指向对象的内容是可以改变的。 |