是什么一个实例,并在Java类(静态)变量之间的差[关闭](What is the differen

2019-07-21 21:31发布

这个问题的题目实际上是一个以前的试题,我期待澄清/一个答案。

请注意,我学习Java和我熟悉它的语法。

据我所知,这个问题可能听说过,如果是问有人可以告诉我在哪里我可以如果有可能访问的问题? 同时,请接受我的道歉,如果是这种情况。 要说明的是我一直在研究这方面的,我自己的理解是,实例变量属于对象/某个类的实例(模板),并在有需要时可以在实例/对象中被改变(突变)。

类变量是根据需要仅具有一个拷贝,并且可以访问,但不能被修改(突变?),但一个变量是提供给所有的类?

我在这里在正确的轨道上?

此外,究竟是什么“静态”吗? 是一个类的实例,只有静态的,如果它位于一个类的实例主内?

非常感谢。

Answer 1:

静态变量是由类的所有实例共享,而实例变量是唯一的类的每个实例。

静态变量的存储是在编译时分配的,他们在加载时加载,并在类的初始化时初始化。 在一个实例变量的情况下,所有上述在运行时进行。

下面是一个有用的例子:

实例变量是每个对象一个:每个对象都有自己的实例变量的副本。

public class Test{

   int x = 5;

 }

Test t1 = new Test();   
Test t2 = new Test();

T1和T2都将有自己的x的副本。

静态变量是每类中的一个:即类共享相同的静态变量的每一个对象。

public class Test{

   public static int x = 5;

 }

Test t1 = new Test();   
Test t2 = new Test();

T1和T2都将共享相同的x。



Answer 2:

你可以让你的类的多个实例。 当你声明一个实例变量,每个实例获取变量自己独特的副本。 当你声明一个静态变量,它是所有场合的同一变量和值。

public class Foo
{
    public int instanceVariable;
    public static int staticVariable;
}

Foo instance1 = new Foo();
Foo instance2 = new Foo();
instance1.staticVariable = 1;
instance1.instanceVariable = 2;
instance2.instanceVariable = 3;

instance1.staticVariable == 1 // true
instance2.staticVariable == 1 // true

instance1.instanceVariable == 2 //true
instance2.instanceVariable == 3 //true


Answer 3:

静态变量存储被它是在所定义的类。如果如由名称实例变量everytime.When创建新对象创建它的一个新的副本的所有实例(或者非实例)之间共享的值。



文章来源: What is the difference between an instance and a class (static) variable in Java [closed]