JAVA中的static方法调用非static方法
来源:互联网 发布:linux展示文件权限 编辑:程序博客网 时间:2024/05/16 10:28
转自:http://blog.csdn.net/jc_njj/article/details/5102556
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 Specificationhttp://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方法相互调用的方式
- java static块和static方法及static方法和非static方法的区别
- Java的static方法与非static方法
- static方法和非static方法的区别(java)
- Java 中的 static 静态方法
- Java中方法的调用-static方法
- java 关于对“是否可以从一个static方法内部发出对非static方法的调用”问题的理解
- static 方法和非静态方法的调用
- static方法中不能调用非静态方法(easy)
- static方法调用
- java中静态方法不可发出对非static方法的调用
- 为什么static修饰的方法能不能调用非static方法和属性,请讲详细点
- 【高薪就业必备12】static方法内部是否能对非static方法调用?
- static方法内部是否可以发出对非static方法的调用?
- Curling 2.0——蛋疼的一道题
- 获得文件存在的时间
- OpenCV深入学习(4)--Mat元素的获取方法
- Java获取当前时间(转载)
- Android上HDMI介绍(基于高通平台)
- JAVA中的static方法调用非static方法
- Wireshark的Bogus IP length错误
- 2012-3-21日
- 工厂选地址问题
- GIT系统安装
- 用moderncv制作精美的Latex中英文简历
- Jsp_保留小数点后两位
- 利用创建临时文件实现共享存储锁
- 多线程 AfxBeginThread 与 CreateThread 的区别