static 静态方法使用

来源:8-9 Java 中的 static 使用之静态方法

qq_半醒态_0

2018-01-16 11:55

http://img2.mukewang.com/5a5d770e0001900507840675.jpg请问这里为什么不能用类名+方法名();调用

写回答 关注

3回答

  • xcopfans
    2018-01-22 19:11:31

    谁说的呀,静态方法即可以用对象调用,也可以用类名直接调用http://img.mukewang.com/5a65c6da0001906e04500407.jpg

    xcopfa...

    再跟你说深一点。在内存中,由static修饰的静态语句是随着着类一起加载的,无论是静态方法还是静态属性,或是静态代码块。 而普通方法,是由对象的创建才跟着加载进内存,所以只能是由对象调用。 这也就解释了为什么在静态方法中,不能使用非静态的东西,因为静态方法加载的时候,对象可能还没被创建,那它还调个球球哦!

    2018-01-22 19:19:37

    共 2 条回复 >

  • qq_Bang
    2018-01-18 11:49:27

    这是我在百度上找的,希望对你有点帮助:

    在静态方法中,不能直接访问非静态成员(包括方法和变量)。因为,非静态的变量是依赖于对象存在的,对象必须实例化之后,它的变量才会在内存中存在。例如一个类 Student 表示学生,它有一个变量String address。如果这个类没有被实例化,则它的 address 变量也就不存在。而非静态方法需要访问非静态变量,所以对非静态方法的访问也是针对某一个具体的对象的方法进行的。对它的访问一般通过 objectName.methodName(args……) 的方式进行。而静态成员不依赖于对象存在,即使是类所属的对象不存在,也可以被访问,它对整个进程而言是全局的。因此,在静态方法内部是不可以直接访问非静态成员的。

  • qq_半醒态_0
    2018-01-16 11:57:42

    运用对象名+方法名();运行是成功的,但是不明白为什么改成类名就不可以。


Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530653 学习 · 6091 问题

查看课程

相似问题