|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
net程序员的大部门代码都靠控件拖拽完成的,虽然java也有,但是无论从美观和速度上都没发和.net比。java程序员都是代码完成的,所以java程序员常戏称.net程序员是操作员,呵呵。
JAVA中类文件加载是静态的。JVM指令是被封装在了.class文件内里,而.class文件的加载历程是静态的,也就是说当我们用到的时分才会往加载,假如不必的话,就不会往加载我们的类。这里所说的用到包含两种体例,第一种就是new一个对象的时分(这个时分要出格注重,当计划到多态的时分,就会有一点点变更,这时候候编译器会做一些优化,如许以来当加载的时分会提早加载计划到多态的类,关于这一点上面有个例子(example1)来讲明。另外一种就是当一个类的静态代码被挪用的时分。
java代码
//example1
//Zoo.java
abstractclassAnimal{
Animal(){
System.out.println("Animalconstructor");
}
}
classTigerextendsAnimal{
Tiger(){
System.out.println("Tigconstructor");
}
}
classDogextendsAnimal{
Dog(){
System.out.println("DogConstructor");
}
}
publicclassZoo{
privateAnimalam;//Example1.1
//privateDogam;Example1.2
privateTigertiger;
Zoo(){
tiger=newTiger();
am=newDog();
}
publicstaticvoidmain(String[]args){
System.out.println("newZoobefore");
Zooz=newZoo();
System.out.println("newZooafter");
}
}
当我们正文失落Example.1.1行时,运转Example1.2行,了局以下:
Example1.2
剖析以上两图的运转了局我们能够看出:当我们将子类对象赋值给父类时,编译器会做一点优化,因而加载器在还没有new子类对象的时分已加载了父类和子类(example1.1了局),当不存在多态的时分,我们能够看到是当要newDog()的时分才会加载Dog和父类。不管何种体例,在new之前,类的确已加载到了内存中。
JAVA为我们供应了两种静态机制。第一种是隐式机制。实在new一个对象和挪用类的静态办法时,就是隐式机制在事情。第二种是显现机制。显现的机制又有两种战略(第一种是用java.lang.Class的forName(Stringstr)办法,第二种是用java.lang.ClassLoader的loadClass())。
第一种:使用forName办法
当我们查API文档就会发明forName办法有两种情势。分离以下:
publicstaticClass<?>forName(StringclassName)
throwsClassNotFoundException
publicstaticClass<?>forName(Stringname,
booleaninitialize,
ClassLoaderloader)
throwsClassNotFoundException
<p>
有了这样一个呼声:让java代替C语言成为基本语言。这些足以说明java简单易学的这个优点。其次,java的功能强大,前面我也提到了,EJB3.0的推出使java成为了大型项目的首选。 |
|