仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 482|回复: 9
打印 上一主题 下一主题

[学习教程] 来看JAVA程序的类加载及其反射机制

[复制链接]
小妖女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:14:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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成为了大型项目的首选。
小妖女 该用户已被删除
沙发
 楼主| 发表于 2015-1-18 23:06:03 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
兰色精灵 该用户已被删除
板凳
发表于 2015-1-23 22:51:18 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
admin 该用户已被删除
地板
发表于 2015-1-31 20:15:34 | 只看该作者
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
小魔女 该用户已被删除
5#
发表于 2015-2-11 21:00:32 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
爱飞 该用户已被删除
6#
发表于 2015-2-27 21:01:45 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
不帅 该用户已被删除
7#
发表于 2015-3-9 13:58:36 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
再见西城 该用户已被删除
8#
发表于 2015-3-11 03:34:10 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
再现理想 该用户已被删除
9#
发表于 2015-3-17 19:30:09 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
乐观 该用户已被删除
10#
发表于 2015-3-24 22:11:49 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 11:27

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表