java,在静态方法中不能调用非静态的方法和引用非静态的成员变量?如何理解?

来源:百度知道 编辑:UC知道 时间:2024/05/22 20:52:04
main方法都是声明为静态的,public static void main(String[] args){}, 但我记得试过 在mian方法里面实例化一个对象t,让后t.方法(),而这个方法没有声明是静态的啊!为什么这又可以调用?

兄弟,main 是程序的入口,是一个特殊的方法,他区别于其他的静态方法,不能用对待其他静态函数的思想去看待main。
我对jvm没有多少研究,不过,我认为,作为一个程序入口,静态是必须的,因为,静态就意味着首先分配内存。

如果作为普通的静态方法,自然是不能引用其他的非静态方法的,原因很简单,其他的非静态方法在内存中是没有的,那你怎么引用?

而静态方法能引用其他静态方法的原理同上也差不多了。

在静态方法中不能调用非静态的方法和引用非静态的成员变量

这个是针对某个类内部而言的。
例如:一个类有
static int a;
public int b;

static void funcA(){
//那么funcA就不能调用 b 和 funcB

};

public void funcB()

其实你说的很明白了,你这个方法是由你new的对象来调用的,并不是main方法直接调用的。静态方法不能调用非静态方法指的的是此静态方法本身不能直接调用非静态方法,但他可以new个对象,让对象来调用~~

静态变量是在程序第一次调用时构造,每次都使用这一个引用,不进行垃圾回收。
非静态变量是在程序每次调用时构造,每次都使用新的引用,进行垃圾回收。

方法、类和变量基本相同。定义时静态加static关键字

楼主都说了是先实例化了一个对象。。。那还问什么。。