比如
[code="java"]public class Test {
public static void testStatic() {}
}[/code]
某类中出现这个语句
Test.testStatic()
请问这个方法什么时候加载到内存中的.Test类有实例化吗?
如果testStatic()方法没有加static修饰.这个语句为什么错误
再就是给我讲讲他的加载及回收的流程和时机
谢谢
比如
[code="java"]public class Test {
public static void testStatic() {}
}[/code]
某类中出现这个语句
Test.testStatic()
请问这个方法什么时候加载到内存中的.Test类有实例化吗?
如果testStatic()方法没有加static修饰.这个语句为什么错误
再就是给我讲讲他的加载及回收的流程和时机
谢谢
[quote]请问这个方法什么时候加载到内存中的.Test类有实例化吗?[/quote]
这个方法在这个类被家在到classloader里面去的时候,Test你没有实例化,就没有实例化了
[code="java"]如果testStatic()方法没有加static修饰.这个语句为什么错误[/code]
我还真没看出来这个语法有什么错误,如果你是说
[quote]
Test.testStatic()
[/quote]
调用错误,那是因为,Test需要实例化
[quote]再就是给我讲讲他的加载及回收的流程和时机[/quote]
我能力有限,以下是我的理解
class可以分为,load - link - init三个步骤,load就是装载这个class,当需要这个类的时候,就通过classloader装载了,然后是link,进行一些语法差错,校验等,最后是类的初始化。static method应该是在load - link - init后才能是用的。
回收机制的话,你这个类被classloader加载以后,一般是不会回收的,除非你得classloder被回收。如果这个类被回收了,那么static method也会被回收。