这个课程中有多少个对象?

时间:2016-04-05 15:10:13

标签: java

public class A {
    private static int a=0;
    private static A a()
    {
        a++;
        return new A();
    }

    public static void main(String[] args) {
    // main method will not be changed
        System.out.println(a);
        System.out.println(a().a);
        System.out.println(a().a().a);
        System.out.println(a().a().a);
    }
}
/*
 * expected output
 * 0
 * 1
 * 3
 * 5
 * 7

你能告诉我这堂课有多少东西吗? a()方法或整数对象?我无法理解是否有静态方法,变量我们不需要对象来调用它们,但是如何?一个()。一个?这是什么意思

2 个答案:

答案 0 :(得分:0)

如果您运行代码,您将获得

0
1
3
5

即使" a"是一个静态变量,您可以从对象访问它。关于为什么它可以访问,即使声明为private,也可能只是因为你试图从main方法中的同一个类访问它。

您始终可以为methodvariable声明相同的名称,因此fine {" a"在你的情况下作为变量和方法。如果您想要预期的输出,只需更改下面的代码

System.out.println(a);
System.out.println(a().a);
System.out.println(a().a().a);
System.out.println(a().a().a);
System.out.println(a().a().a);

答案 1 :(得分:0)

静态和非静态方法之间的一个区别是你可以创建它的对象,每个对象都包含唯一的数据。静态方法不允许你这样做但你可以直接调用它上面的方法(方法就是这样)包含) 这种静态方法不能像非静态方法那样保存各种数据,但在某些情况下似乎很有用  例如,当您使用类加载数据并对其进行过滤并根据某个标准对其进行排序时,您希望在许多地方使用此数据,因此您不需要创建对象,因此您可以将此类设置为静态< / p>