【问题标题】:In java, if the method , static variable and variable of the class are instanced multiplely As instancing the class multiplely在java中,如果类的方法、静态变量和变量被多次实例化,如同类被多次实例化
【发布时间】:2017-04-11 05:23:00
【问题描述】:

在java中,如果类的方法、静态变量和变量被多次实例化,就像类的多次实例化一样。

例如:

class Person {
    private String name;
    public static int age;

    public void getName() {
       return name;
    }

    public static void getAge() {
        return age;
    }
}

当实例类“Persion”3次时:

 Persion p1 = new persion();
 Persion p2 = new persion();
 Persion p3 = new persion();

如果变量“name”、“age”和函数“getName()”、“getAge”被实例化了3次?

【问题讨论】:

  • 很快,所有成员都会被实例化。

标签: java jvm


【解决方案1】:

变量“name”、“age”和函数“getName()”、“getAge()”是否被实例化了3次?

  1. name 不是 static,因此是实例化三次
  2. agestatic,因此它没有被实例化三次
  3. getName() 也是每个对象分开的
  4. getAge()static因此对所有对象都相同

static 基本上意味着它在该类的所有对象中都是相同的

【讨论】:

    【解决方案2】:

    静态变量只定义一次——static关键字表示不属于对象,而是属于类。

    变量name 不是static,所以它会在创建对象时被初始化。

    因此,如果您创建三个 Person 对象,您将拥有 3 个 name 变量(对于您的每个 Person 对象,只有一个 age 静态变量。

    【讨论】:

      【解决方案3】:

      在java中static变量只获取一个内存地址一次与static方法相同,即使你创建了许多Persion的副本也只存储一个内存

      【讨论】:

        猜你喜欢
        • 2016-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多