
展开全部
1 不管是静态方法还是非静态方法,都需要调用后执行,其执行的次序和在类里声明的次序无关,区别是静态方法是“class.method"方式执行,非静态方法是"object.method"方式执行,即后者需要创建一个对象。
2 静态成员变量(也称类变量)先于非静态成员变量初始化,静态成员变量在类第一次加载时初始化,所有对象共享一份静态成员变量,非静态成员变量则在对象创建时初始化
2 静态成员变量(也称类变量)先于非静态成员变量初始化,静态成员变量在类第一次加载时初始化,所有对象共享一份静态成员变量,非静态成员变量则在对象创建时初始化
更多追问追答
追问
奥,再请教大侠,类一共要加载几次?
追答
只加载一次,而且是懒加载的,第一次调用该类的时候加载(比如当调用该类的静态方法或者成员变量,new一个该类的对象的时候)。
具体的说,每一个类(.class)文件,都对应着一个Class对象,这个Class对象类似于一个模板,用于创建该类的对象。这个Class对象在第一次调用该类时创建并加载到java虚拟机中。
展开全部
我想 :类的静态初始化块在加载类时先执行,此时还没有对象产生。创建对象时构造方法和非静态初始化块按先后执行。其它方法基本上是调用才执行。也有例外。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
静态方法没有先执行
class A{
static{
...
}
public static void a(){...}
public static String b(){...}
}
static{
...
}
这类代码才会先执行
a() b()就是按照你书写的顺序执行的 啊
class A{
static{
...
}
public static void a(){...}
public static String b(){...}
}
static{
...
}
这类代码才会先执行
a() b()就是按照你书写的顺序执行的 啊
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
源文件和类文件你没有分清。
*.java和*.class
*.java和*.class
追问
怎么这么说,请大侠指教一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |