如题

解决方案 »

  1.   

    前两天看Core Java刚好看到这块,根据书上的解释,貌似没多大区别,只是final的变量必须创建一个对象来调用,static final的变量不需要创建对象,直接使用类名就可以了,当然如果非要创建一个对象然后再调用,也是可以的。
      

  2.   

    final 修饰的变量都不能再改变,要么在声明的时候初始化,要么在构造函数中初始化。
    static final 加上静态修饰符,这个变量就属于类,而不是某个对象。
      

  3.   

    假设某个类 A 有一个 final 修饰的变量 b 和一个 static final 修饰的变量 c ,那么 A 的每个对象都有一个独立的 b ,并且所有的 A 对象都共享一个 c .
      

  4.   

    1、final 等价于 一次性,跟普通变量一样,可以先声明后随便哪定义,一旦定义将不可修改。
    2、static final就是一次性的类变量,而不用static时是一次性的对象变量
      

  5.   

    static 关键字是表示只有一份,final表示生命的变量的“引用”在内存中不能改变:如过是基本类型的变量(在栈中分配,那就是不可变的),
    如过是对象,那么你还是可以在引用所指的堆中改变对象的实质的。
    如果你已经将一个变量声明为final的,即不可变,而且每创建一个对象多要初始化一个此变量,也没有什么实质的意义那么通常情况下还不如声明
    为static final,那样,就只有一份不可变的,降低了性能的开销,优化了设计。
      

  6.   

    final修饰的变量?
    final修饰了只能是常量了。必须在声明时赋值,或在构造中赋值,一旦赋值就不可改变。
    static final只不过是加了一个static了 在Java中是可以使用类名和对象来调用的。就是比直接final修饰多加了一个static限定。
      

  7.   

    楼主所说的三者是这3个么?
    1.final修饰的变量
    2.final修饰的常量
    3.static final修饰的变量以上1和2其实是同一个概念,final修饰的变量也称为有名常量(named constant),那么楼主的问题现在就变成了:final修饰的变量,和static final修饰的变量,这两者有什么区别1.static final修饰的变量
    通常情况下,声明named constant域的时候,都会同时把它声明为static,因为正如11楼所说,可以降低系统开销。2.final修饰的变量
    但是在某些特殊情况下,我们只能用final而不能用static修饰,例如一个Employee类,里面有一个name域,表示雇员姓名,雇员姓名一旦在构造函数中被设置,以后就不能更改,所以name应该声明为final。但是name是属于每个雇员的(也就是Employee类的每个实例对象),而不是属于整个Employee类的,所以这时候,就不可声明为static。
      

  8.   

    另外还有一个小区别:
    static final只能用来修饰类的域(Field)
    final既可以用来修饰域(此时通常同时也声明为static),也可以修饰方法中的局部变量
      

  9.   

    1 变量
    其值可以改变,在内存中有多个拷贝,每个对象一份
    2 final修饰的变量
    其值不能改变,在内存中有多个拷贝,每个对象一份
    3 static final修饰的变量
    其值不能改变,在内存中只有一个拷贝(节约了内存),
    在程序启动时自动加载到内存(提高了程序的执行的可靠性)。
      

  10.   

    首先要改正一个错误: 用Final修饰变量即是常量,所以凡是用Final修饰的都是常量, 没有Final的变量之说.Final修饰的常量和static Final修饰的常量都存放在内存中的data segment区. 并且它们都是不可改变的.它们的区别: 
    用Final修饰的常量要访问时,需要创建一个对象, 而用static Final修饰的常量要访问时不需要创建对象,直接用类名.+常量。深层原因:当类被类装载器装到内存时,static Final常量首先被初始化,并且被所有对象共享,这样就大大减少了空间和时间。 而Final常量只有创建对象时才能访问,而且每创建一个对象,就会为这个Final常量分配一个空间。另外,Final 和 static Final 各有长处,要根据需要选择哪种方式。
      

  11.   

    看看Thinking In Java就知道了;
      

  12.   

    final修饰的变量放在内存的什么位置   堆还是栈