一个非静态类中有N多个方法,其中只有一个是静态的。
我想问的是,像TOMCAT,JBOSS之类的,在加载是,是把整个类都静态了还是只有这一个方法是静态的?
我关心的是加载时占用的内存。
-------------------
以下两个回答,我实在不知选哪位的好。当然有一位很热心,回答很多。表示感谢。但。。。
多谢回答。但是我不太同意你说的第一点。当然,类不能标记静态。但是你在使用System.out.println()时,明显先指向类“out”,再指向其下的println()方法。所以,就算类没静态,但这个静态方法有了类的标记。
那么我想问的就是,这个类的标记仅仅是个标记,还是它有一个实例化了的类,只是这个类下只有静态的方法?
是不是应该探讨下呢?
我想可能是我解释的有些偏差
我想说的是,类的定义是不能标注static。但是如果一个类A做为类B的成员对象,那么在B中是可以用static来标注A的定义的
比如
public class A{ //如果这里写成public static class A 肯定编译不会通过的我们就可以直接调用B.a.doSomething(),因为a作为B的一个静态成员而存在,所以不需要我们去实例化,但是如果直接A.doSomething()就是出错,因为A的doSomething()没有被标注static
看来是我说得不够清楚。
那就按你的例子说。
我们改改:
public class A{
public static void doSomethind(){}
。。。。
}
很明显,这样我们就可以直接使用a.doSomethind(),而不用NEW一个A出来了。
这样,回到我的问题上,a.doSomethind() 的这个 a 怎么来的?
a是B的成员变量啊!
既然在A中定义了static doSomething,何必还要用B.a.doSomethind()
按你所说,System.out.println()中的println()也是静态方法喽?你可以试下直接用out.println()能否执行
请问有没更实在的更直观的例子或信息?
追答可以用工具分析吧
这方面没研究过
你可以用可以查看内存的工具分析这个程序
直接在普通类中定义静态方法,使用static进行修饰就可以了。
示例:
public class A{//定义一个普通类