日期:2014-05-18  浏览次数:20708 次

请教一个final变量的问题

public class Test{
  public int test(final int x){
    return ++x;
  }
}

这代码有错么?我感觉没错啊 final只是引用不能变,值可以变吧?

------解决方案--------------------
刚百度了一个比较详细的  楼主看看  http://zhidao.baidu.com/question/357580512.html
------解决方案--------------------
final 修饰的变量值是不能变的,这个是基本类型,哪来的引用?
------解决方案--------------------
引用:

public class Test{
  public int test(final int x){
    return ++x;
  }
}

这代码有错么?我感觉没错啊 final只是引用不能变,值可以变吧?


你理解错了 对于基本类型 值不能改
------解决方案--------------------
public int test(final int x) {
return ++x; //编译异常
}


int i = 1;
System.out.println(test(i)); //结果为2
System.out.println(i); //结果为1
------解决方案--------------------
final修饰的为常量,不能再对其进行任何的修改。
------解决方案--------------------
能编译过去吗?
------解决方案--------------------
return ++x; //编译异常
当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值
------解决方案--------------------
final修饰的变量为编译器级别的常量,编译器不允许其值被改变,因此定义变量同时必须初始化,否则编译器会报错。
------解决方案--------------------
final 修饰的 是常量,就是常数
------解决方案--------------------
final就是最后一次赋值,值不再变化了