网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.完成技术跨越:Java语言的11个关.
.关于使用包的一些提示.
.Eclipse Form程序设计指南之入门.
.步入SWT/JFace世界,你还等什么.
.PowerFolder 工作流服务器版本0..
.用J2SE 1.4 进行 Internet 安全编.
.如何运行一个外部程序并捕获输出.
.另类查询 Hibernate HQL 深度历险.
.确认Java拥有足够的内存.
.tomcat的sql server数据源的配置.
.Hibernate配置文件在单元测试中的.
.Sun电信行业解决方案.
.责任链模式(Chain of Responsib.
.用MVC架构简单的注册、登录例子.
.改进对象管理方式 提高程序性能.
.java计算磁盘空间的大小.
.用JFreeChart创建基于Web的图表.
.JAVA教程 第七讲 Swin.
.Javascript实例教程(20) OLE Aut.
.详细介绍用JBuilder9开发的Strut.

Java语言和C++语言的差异—老生常谈

发表日期:2008-1-5



     [引子]这个话题并不新鲜,但是作为语言比较类的文章,从基础的、具体的、细节的层面来做比较,做小结,恐怕对beginner而言,应该是有所裨益的,想来会比论坛里的口水仗,抑或概念性的、大层面的比较要来得更为实际一些吧
  
     Java采用了C及C++的语法格式,对于学习过C及C++的程序设计者来说,学习Java将有可能很轻松。但是,假如仔细检查Java语言的许多细节,就会发现Java取消了不少C及C++的特性,并且加入了一些新的特性。这些差异包括:
  
  
     o 不再有指针(Pointer)的概念。
  
  
     这是Java和C/C++在语法上的主要区别之一。在C及C++中,指针的灵活运用将会给程序设计带来极大的便利,但是其灵活性也成为了导致程序不稳定的一个主要因素。配合C及C++的内存治理策略,编程人员必须亲自跟踪自己向系统申请到的内存,最后确认交还给系统。并且在使用指针时,要随时注重是否超过合法的内存空间,造成Segmentation Fault或General Protection Fault这样的问题。
  
  
     Java提供了一种引用(Reference)类型用来替代指针,通过引用去访问申请到的内存空间,可以确保不会访问不属于自己的内存空间,同时,程序的执行系统也可以动态地做内存垃圾回收工作,将那些被取消引用的内存空间回收给系统使用。这种动态内存分配机制,通过牺牲一定的灵活性,保证了内存分配一定程度上的安全性。
  
  
     o 不再有函数(Function)的概念。
  
  
     Java编程语言中,取消了结构化语言中最重要的部分--函数。在面向对象程序设计的概念里,对象的数据才是真正的主题,而处理对象数据的方法则必须依附在对象内才有意义。因此函数概念完全是不必要的。这强化了面向对象的开发策略。
  
  
     o 不再使用strUCture、union和typedef。
  
  
     事实上,在C++中就可以去掉C中的structure和union等对复杂数据的自定义结构类型了,因为类(Class)的定义方式完全可以做到这项功能。而typedef的功能也可以由类来实现。虽然C++这样的设计是为了和C兼容,但是这些究竟是多余的语言特点,在Java语言中便被抛弃了。
  
  
     o 不再有类的多重继续(Multiple Inheritance)。
  
  
     在C++中,多重继续是一项很强的功能,但也是较难把握的。取消多重继续降低了Java语言的功能,但它使Java看起来更为简洁。同时,Java也提供了接口(Interface)的方式,可以实现部分多重继续的作用。和多重继续的不同之处在于接口并不会定义类方法的内容,以及类中的数据。
  
  
     o 不再有操作符重载(Operator Overloading)。
  
  
     操作符重载被看作是C++的一个特色。在C++中,利用操作符重载,程序设计者通过对现有运算符赋予自己的定义,可以使程序看起来更为自然。但是,假如使用不当,也会使整个程序的可读性大受影响。同时,这一功能的存在也并非必要,程序设计者可以定义类中的方法来达到同样的目的。
  
  
     o 取消了自动类型转换。
  
  
     Java是一种强类型检查的编程语言,对于诸如浮点型变量赋值给整型变量这样的情况而言,在C++的语法中是答应的,最多只是在编译时给出警告信息。但是,在Java中,除非写明强制类型转换,否则编译无法通过。
  
  
     o 不再有预处理器(preprocessor)功能。
  
  
     利用C/C++中提供的#define、#include等预处理指令,厉害的程序设计人员可以自己开发一套只有自己才看得懂的宏指令集。从软件工程的角度上看,这对团队开发软件和整个软件的维护都是十分不利的。同时,预编译后的程序代码和程序设计者看到的程序代码是不同的。假如宏指令集有错,编译器产生的错误信息将不会是编程人员所预期的,这增加了程序调试的难度。
  
  
     o 取消了goto语句。
  
  
     在C++中,goto语句已经不被建议使用了,保留goto只是为了和C语法兼容。在Java中goto语句被完全抛弃了,与此同时,Java又扩大了break语句和continue语句的功能,通过使用break和continue,程序流程被答应在多层循环中跳转。
  
  
     可以这样说,Java编程语言是一种简洁而有效的纯面向对象的编程语言。而C++语言因为要与C兼容(C++语言是作为C语言的一个超集被定义的),所以在面向对象的特性方面不如Java好。
上一篇:谈java的学习方向 人气:667
下一篇:java初学——兴奋而且难忘的一课 人气:507
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐