如何操作静电?

时间:2013-06-11 10:43:09

标签: java default operator-keyword static-members

每当我们使用static时,我们都不需要创建类的引用变量。我们可以在<class_name>

的帮助下直接访问课程

但是当我们编写以下代码时:

class Abc
{
    static void show()
    {
        System.out.println("Hey I am static");
    }
}

class Test
{
    public static void main(String args[])
    {
        Abc.show();            //1
        new Abc().show();      //2
    }
}

第1行和第1行如何? 2工作。什么是

的意义
new Abc().show();

5 个答案:

答案 0 :(得分:3)

使用实例(尽管它有效)是调用static方法(或访问静态字段)错误方式,因为static表示其成员类/类型 而不是实例。

因此,编译器将使用Class类型替换实例(由于静态绑定)。换句话说,在运行时ABC.show()会被执行而不是new ABC().show()

但是,您的源代码仍然看起来令人困惑。因此,它被认为是一种不好的做法,甚至会导致像Eclipse这样的IDE发出警告。

答案 1 :(得分:0)

由于您的ABC类没有覆盖默认构造函数。

相当于:

class Abc{
    public Abc(){super();}

    static void show(){
         System.out.println("Hey I am static");
    }
}

因此,通过执行new Abc().show();,您只需创建类的新Abc对象,并通过此对象调用ABC类的静态方法(它将显示警告,因为这不是正确的调用方法静态方法).`

答案 2 :(得分:0)

您可以使用实例中的静态方法,如new Abc().show()中所示,但它可能会造成混淆,不推荐使用。

对于静态方法坚持className.staticMethod(),否则坚持classInstance.instanceMethod()

答案 3 :(得分:0)

这很简单意味着您正在创建ABC对象,而不是尝试通过对象访问此变量。

但是,在编译时,

new Abc().show(); 

转换为Abc.show().

答案 4 :(得分:0)

静态关键字建议每个类只有一个副本,现在你已经创建了方法static并且正在使用Classname.methodname()以适当的方式访问,因为当类被加载到JVM时,它的实例将被创建,所以不需要显式地创建新的班级的对象。希望它有意义。