首页
|
登录
|
注册
|
职吧
|
我的职脉
职位关键字
工作地点
工作名称
公司名称
校园招聘
中国最好的工作搜索引擎!
回复留言
java中的static不能引用非static成员方法
作者: pigwen521
01-01 08:00
回复
java中的static不能引用非static成员方法,我看到下面这程序有点不解,请高手指点下哟。(问题看程序的注释)说祥细点哟
class a
{
public void p()
...........
}
public class b
{
public static void main(String args[])
{
a p1=new a();
p1.p();//这个P()不就是非static成员方法吗?,不也被static // void main()这个static方法引用了吗?为什么这样运行程 //序是没有错的。
}
}
回复:java中的static不能引用非static成员方法
作者: yxjiang
01-01 08:00
回复
public static void main(String args[])是程序的入口函数。
每一个程序执行的时候都对应一个虚拟机(你应该听说过虚拟机吧),虚拟机会首先找到类文件(class后缀,在这里就是a.class),然后虚拟机会对导入的class文件进行提取,得到其中的类型信息放入到方法区中(方法区暂时不用管,你就当成把这些信息成放到一个特定的地方),然后通过类的二进制文件找到这种main方法(就是最开始说到的那个)。
另外你说的那个其实不是static调用非static,因为在main方法中,你已经实例化了一个对象了,是通过对象调用的这个方法,而不是在static中直接调用的。
希望对你有帮助,你可以先看看Bruce Eckel的《Thinking in Java》,中英文都不错,有了一个大概的了解后,就可以继续看《深入Java虚拟机》,这样就有一个全面的对java的了解了,当然,如果要深刻理解,编程是少不了的。如果有精力,可以看看API的源代码,以及API附带的例子,都是很经典的。不过对于一般的开发来说也个就不是太必要了。
回复:java中的static不能引用非static成员方法
作者: gegeta各各他
05-03 11:01
回复
lgexe - 试用期 一级答得也不错,学习中
回复:java中的static不能引用非static成员方法
作者: 足球10号
05-03 11:01
回复
好像是不能吧
回复:java中的static不能引用非static成员方法
作者: lonelybat
05-03 11:01
回复
p1是a的一个实力化对象,它当然可以去访问他自己的成员方法。这个非静态的p()方法并不是被main方法调用的。
回复:java中的static不能引用非static成员方法
作者: lgexe
05-03 11:01
回复
----------------------------------------
a p1=new a(); //声明定义对象p1。
p1.p();//执行对象p1的方法p()。
----------------------------------------
以上这些和楼主所说的不是一回事。
另外,执行一个方法,是执行一个对象的方法(非静态),如果这个对象实际存在就可以通过“对象.方法()”的形式来执行该方法。而静态方法是不需要对象存在的,相当于在java启动的时候就直接定义了一个能执行该静态方法的对象,要调用该静态方法,直接用“类名.静态方法名()”就可以执行。
就如果程序写成下面这样就是楼主所说的问题了:
----------------------------------------
public class b {
public static void x() {
p();//相当于this.p(),但x是静态方法,该方法被执行的时候,并没有任何b类型的对象被创建,编译器不知道你要执行哪个对象的p()。出错。
}
public void q() {
p(); //q()被执行的时候,相当于某个对象的q()被执行,此时该对象已经存在是前提条件,在方法中再调用该对象的另一方法p()是可以的。不会出错。
}
public void p() {
...........
}
}
标 题:
内 容:
用户名:
游客
关于我们
┊
职脉新闻
┊
联盟合作
┊
联系我们
┊
友情链接
┊
隐私条款
Copyright©2005-2007, 版权所有 WWW.JOBMET.COM
ICP证:京ICP备06019556号