深化理解Java初始化的含义[Java编程]
本文“深化理解Java初始化的含义[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
可以这样认为,每个类都有一个名为Initialize()的办法,这个名字就表示了它得在利用之前调用,不幸的是,这么做的话,用户就得记着要调用这个办法,java类库的计划者们可以通过一种被称为构造函数的特别办法,来保证每个对象都能得到被始化.假如类有构造函数,那么java就会在对象方才成立,用户还来不及得到的时刻,自动调用那个构造函数,这样初始化就有保障了.
我不知道原作者的描写和译者的理解之间有多大的差别,结合全章,我没有发现两个最关键的字""和"".至少阐明原作者和译者并没有真正阐明JVM在初始化时做了什么,大概说并不理解JVM的初始化底细,要不然明显有这两个办法,却为什么要认为有一个事实上并不存在的"Initialize()"办法呢?
""和""办法在那边?这两个办法是实际存在而你又找不到的办法,大概恰是这样才使得一些大师都犯晕.加上jdk实现上的一些BUG,假如没有深化理解,真的让人摸不着北.
目前科学体系有一个奇特的现象,那么宏大的体系最初都是成立在一个假定的底子是,假定1是精确的,由此推导出2,再持续推导出10000000000.惋惜的是太多的人根本不在乎2-100000000000这样的体系都是成立在假定1是精确的底子上的.我并不会用“可以这样认为”这样的假定,我要确切证明""和""办法是真真实实的存在的:
package debug;
public class MyTest{
static int i = 100/0;
public static void main(String[] args){
Ssytem.out.println("Hello,World!");
}
}
履行一下看看,这是jdk1.5的输出:
java.lang.ExceptionInInitializerError
Caused by: java.lang.ArithmeticException: / by zero
at debug.MyTest.(Test.java:3)
Exception in thread "main"
请注意,和别的办法调用时产生的非常一样,非常被定位于debug.MyTest的.
再来看:
package debug;
public class Test {
Test(){
int i = 100 / 0;
}
public static void main(String[] args) {
new Test();
}
}
jdk1.5输入:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at debug.Test.(Test.java:4)
at debug.Test.main(Test.java:7)
JVM并没有把非常定位在Test()构造办法中,而是在debug.Test..
当我们看到了这两个办法今后,我们再来具体谈论这两个“内置初始化办法”(我并不喜好生造一些非尺度的术语,但我确切不知道若何标准地称谓他们).
内置初始化办法是JVM在内部专门用于初始化的特有办法,而不是供应应程序员调用的办法,事实上“<>”这样的语法在源程序中你连编译都无法通过.这就阐明,初始化是由JVM掌握而不是让程序员来掌握的.
以上是“深化理解Java初始化的含义[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |