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。。为此,我们需要一些代码来说明您是如何尝试这样做的。也许是另一个问题?