JAVA中的static调用非static方法的几点注意
来源:互联网 发布:天天电玩城源码 编辑:程序博客网 时间:2024/05/23 12:55
1、由JVM的执行机制决定了在static方法中是不能直接调用改类的其它非static方法的。
因为类方法(static方法)执行的时候,其所在的堆栈中是没有指向对象的引用的任何信息的,而非static方法在调用的时候又必须要知道调用该方法的对象的引用。所以从这里可以看出,static方法中是没有办法直接调用非static方法的。
从另外一方面来讲,static方法中是不存在this的,而this是一个很重要的指向对象的引用的关键字(每个非static方法中都应该存在的,并且指向了调用该方法的对象的引用;非static方法调用改类其他方法的时候实际上是用到了this.[Method])。所以没有this的static方法是不可能直接调用该类中的非static方法的。
2、static方法中可以通过创建(new)该类的引用或者在调用static方法的时候传递一个对象的引用过去,这两种方法来调用非static方法。
典型的例子就是static void main()方法,在这个static方法中可以看到,会创建任意的实例,然后通过这些实例来调用所属类的非静态方法。
3、static方法是在编译的时候确定的,在类装入内存的时候也同时装入内存了。而非static方法是在类的实例化的时候装入内存的,其必须依赖于类的实例。
实例在装入堆栈的时候是会附加上指向method area(具体的可以参看JVM Specification http://java.sun.com/docs/books/jvms/second_edition/html/VMSpecTOC.doc.html)的指针,所以可以在非静态方法中调用static方法。
- JAVA中的static调用非static方法的几点注意
- JAVA中的static调用非static方法的几点注意
- JAVA中的static方法调用非static方法
- Java - static的注意点
- 为什么static修饰的方法能不能调用非static方法和属性,请讲详细点
- static方法与非static方法相互调用的方式
- java static块和static方法及static方法和非static方法的区别
- Java的static方法与非static方法
- static方法和非static方法的区别(java)
- 【Java】static方法与非static方法
- java 关于对“是否可以从一个static方法内部发出对非static方法的调用”问题的理解
- Java中方法的调用-static方法
- static 方法和非静态方法的调用
- java中静态方法不可发出对非static方法的调用
- static方法的使用注意
- 【Java入门】Static(静态)注意点
- static方法内部是否可以发出对非static方法的调用?
- 是否可以从一个static方法内部发出对非static方法的调用?
- VC中Radio控件的用法
- Elite
- linux 系统安装和软件推荐
- 奔三的我怎么办
- 螺旋霓虹灯
- JAVA中的static调用非static方法的几点注意
- GNU GLOBAL ソースコードタグシステム
- matlab中随机函数的具体使用方法
- 如何使float列表居中排列
- 软件构架实践:对一些质量属性使用的战术
- NHibernate Reference Documentation - NHibernate 参考文档
- Contest Problem Types(信息学竞赛的题目类型)
- DispatchAction和MappingDispatchAction的用法及区别
- 虚拟化技术打造绿色数据中心 管理成本可减少40%