Java 最终变量与静态最终变量之间的差异
我只是在研究最终数据成员,我想最终变量和静态最终变量的区别是什么Java 最终变量与静态最终变量之间的差异,java,Java,我只是在研究最终数据成员,我想最终变量和静态最终变量的区别是什么 我知道,一个静态字段和final字段只有一块存储空间,final变量将有与每个实例相关联的存储空间 但是,即使我只声明一个变量final,那么它对于所有对象都是一样的,因为我需要在程序本身中初始化它们,而不是在运行时初始化它们 因此,除了与内存相关的问题外,两者基本上没有区别 但即使我只声明一个变量final,它仍然是一样的 对于我需要在程序本身中初始化的所有对象 而不是在运行时 不,可以在构造函数中初始化非静态最终成员。之后
我知道,一个静态字段和final字段只有一块存储空间,final变量将有与每个实例相关联的存储空间 但是,即使我只声明一个变量final,那么它对于所有对象都是一样的,因为我需要在程序本身中初始化它们,而不是在运行时初始化它们
因此,除了与内存相关的问题外,两者基本上没有区别 但即使我只声明一个变量final,它仍然是一样的 对于我需要在程序本身中初始化的所有对象 而不是在运行时
不,可以在构造函数中初始化非静态最终成员。之后不能重新赋值。最终变量:声明为最终变量的变量将是常量,其值不能更改,并且可以在构造函数中初始化
静态最终变量:必须在声明期间或在静态初始值设定项块中对其进行初始化。最终
意味着您只能为变量分配一次值。final
可以在许多范围内使用,并且非常有用,在对象属性中,您必须(并且必须)在声明、构造函数或对象的初始化块中设置值
而static
是设置变量的范围,这意味着在类属性中,值存储在类内,即使没有对象也可以访问,当您使用static final
或final static
时,您必须(并强制)访问在声明上或类的静态初始化代码内设置值
例如:
public class NewClass {
static final int sc = 123; //I recommend to use this declaration style.
final static int scc;
final int o = 123;
final int oo;
final int ooo;
static {
scc = 123;
}
{
oo = 123;
}
public NewClass() {
ooo = 123;
}
void method(final int p) {
// p=123; //Error, the value is only assigned at the call of the method.
final int m = 123;
final int mm;
mm = 123;
// mm = 456; //Error, you can set the value only once.
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(m + p); //You still can reach the variables.
}
}).start();
}
}
我可以在运行时通过用户输入初始化最终变量的值吗?只有在用户输入后调用构造函数时才可以。调用构造函数后无法更改它。仅当它是构造函数的一部分时。解决这个问题的一种方法是先让另一个类读入值,然后在知道数据后用最后一个变量创建对象。。正如你所看到的,我对java是新手。。是否可以根据用户输入调用构造函数??如果是的话,你能给我举个例子吗@用户1262062。。为此,我们需要一些代码来说明您是如何尝试这样做的。也许是另一个问题?