资源预览内容
第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
第9页 / 共12页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
浅析JAVA与C+的区别 浅析JAVA与C+的区别关键词:继承;多继承;构造函数;OOP;类封装; 摘要:c+支持类的多继承,java采用类的单继承;C+中引入构造函数的同时也引入了析构函数,而java却没有析构函数,它自动进行无用内存回收操作,不需要程序员进行删除,而c十十中必须由程序释放内存资源。本文将从一些常见的技术角度入手,对这两种程序设计语言进行阐述。 一、概述 OOP关键特性 面向对象程序设计(OOP)并不是一种新的程序设计技术。它最早可以上溯到Simula-67,虽然它的第一个真正完整的实现是Simula-80。如今OOP已经非常流行,并且出现了许多支持OOP的语言,比如C+,Objective-C(另一种C语言扩展),CLOS,Eiffel,Ada以及最近的Java。 OOP的关键特性如下: •类,在类中封装了表现和操作的抽象数据类型。在OOP语言中,类是模块、封装和数据抽象的基础。 •继承,从已存在的类型中继承元素,改变或扩展旧类型的方法。 •多态性,它允许使用类似的方法操作不同类型的对象。它使得类的可用性进一步提高,程序也因此更容易维护和扩展。 二、区别 (一)数据类型 无论是哪一种语言,数据类型都是比较重要的,而在Java和c+中也是如此。C+有许多种基本类型,还有struct,union,enum,数组和指针,C+指针可以指向对象,也可以不指向对象,在java程序中的变量只有两种,一种是基本数据类型(boolean,char,byte,short,int,long,float,double),另一种是对对象的引用,没有枚举、联合类型,将可有可无的语言元素去掉是Java对C/C+做出的一大改变,因此,普遍认为Java较C+更轻便,更精简。 Java采用Unicode字符集,C+通常用ASCII字符集。Java中的boolean类型不能转换成其他类型,反之亦然。C+最近引进了bool类型,代表布尔类型,整型也可作为逻辑判断,Java中包括了一个字符串的对象,并且是个常量。字符串不像字符数组一样,虽然可以简单的从一个字符数组构造一个字符串。 (二)构造函数 在C+以及Java中,构造函数和类具有相同的名字。如果没有定义构造函数,编译器会自动为类添加一个默认构造函数。在这两种语言中,类可以具有多个构造函数,这就是所谓的“方法重载”。 在Java中,虽然构造函数也被称为初始化函数,但与C+的构造函数在使用上没有什么区别。需要注意的是,Java虚拟机负责创建对象,而构造函数只对创建的对象进行初始化。 C+的析构函数在对象超出作用域时,或者删除动态创建对象时自动被调用。每个类只能由一个析构函数。而Java没有析构函数,没有引用的对象将被碎片回收程序在后台销毁。在销毁对象之前,碎片回收程序调用finalize()方法。但是,并没有什么保证这个函数真正被调用。因此,如果需要释放资源,就要定义一个方法,并保证它被调用。 (三)类封装 这两种语言提供了相同的三种访问限定符来提供不同级别的类封装:public,protected和private。public意味着对于任何类都是可见的,protected意味着对于派生类可见,private意味着没有外部可见性。但是两种语言的实现细节并不相同。 在C+中,可以使用friend关键字跳出类封装。由class关键字声明的类默认可见性是private,由struct关键字声明的类默认可见性是public;在Java中,一个语法上的区别是每一个类成员都要用访问限定符声明,另一个实质上的区别是Java中类成员默认访问限定符是friendly,因此对同一个包中的所有类都是可见的。同样,protected关键字表示类成员对派生类可见,同时也对同一个包中的其它类可见,而private protected才对应于C+中的protected。 (四)自动内存管理 Java程序中所有的对象都是用new操作符建立在内存堆栈上,这个操作符类似于c+的new操作符。下面的语句由一个建立了一个类Read的对象,然后调用该对象的work方法: Read r=new Read(); r.work(); 语句Readr=newRead();在堆栈结构上建立了一个Read的实例。Java自动进行无用内存回收操作,不需要程序员进行删除。而c十十中必须由程序释放内存资源,增加了程序设计者的负担。Java中当一个对象不被再用到时,无用内存回收器将给它加上标签以示删除。JAVA里无用内存回收程序是以线程方式在后台运行的,利用空闲时间工作。 在垃圾回收的语言中,运行时环境一直监测哪些内存不被使用。当一块内存不用的时候,系统自动的回收内存。比如说,一个对象在一个方法中生成,但是没有被调用着返回或者没有储存为全局变量,不能在方法外部使用。系统自己会知道哪些变量是用不到的,哪些是可以用到的。因此,不必再为破坏对象回收内存而担心。在C+中,很多的调试时间都被使用到检查内存漏洞中。Java的这种方法很大程度上降低了这种错误的可能。但是依然不能处理逻辑混乱的程序,它们不能够被回收。许多C+的类中的析构函数是用来释放对象引用的内存的。Java使垃圾回收的事实说明在Java中不是必需写析构函数了。但是并不意味着可以不为类写析构函数。比如,一个对象打开了网络连接就必须被恰当的清理来关闭这个连接。在Java中,析构函数被称作finalization方法。 (五)异常 异常是Java的重要特性,JAVA中的异常机制用于捕获例外事件,增强系统容错能力。异常处理构想的出发点是简化程序的错误处理代码,提供标准内建机制,从而使程序更加健壮。异常处理的内容很多,这里只是简述一些关键的要素和区别。 C+使用throw关键字来产生一个异常,用try关键字标志被保护的程序块,用catch关键字标志异常处理程序代码。异常是一些特殊类的对象,在这三种语言中都构成了各自的继承链。C+会对所有栈中的对象进行栈展开和销毁。 Java使用和C+相同的关键字,但是其行为却更接近于Object Pascal,包括使用finally关键字。所有采用对象引用模型的语言基本都是如此。碎片回收程序的存在限制了finally关键字对类的应用,这些类占用了内存资源。Java认为所有能产生异常的函数都具有一个正确的异常子句,这个子句告诉Java哪些异常可能会被产生。这个假设十分严格,并由编译器进行检查。这是一个非常有用的技术,即使这意味着程序员要做更多的工作。Java中的异常类必须派生自Throwable类。 在C+中,异常和异常处理是十分深奥的事情,许多C+程序员从没有处理过它们甚至不知道它们是何物。异常是在正常的过程中出现的未预料的错误,因此,它们不会从方法中返回,或者作为参数传入;但是,它们不能被忽略。 在Java中,异常已经成为语言中非常成熟的部分。方法的说明中就包含了异常的信息,程序处理器也强制检验如果使用了一个能够产生异常的方法,就必须检查异常是否发生。几乎所有的Java程序员都会遇到异常的情况,因为许多非常有用的库中的类都会抛出异常。 (六)运行 Java在虚拟机上运行,首先编译形成class文件(字节码),然后再由虚拟机来解释执行;Java源代码被编译成字节码(.class文件),字节码是一种只有JVM才能识别的二进制低级代码,它与具体的处理器无关,要由安装在OS之上的JVM解释执行,转换成相应平台的机器码,因此Java是体系结构中立和跨平台的;C+首先编译成目标文件obj,然后再链接(link)变成可执行文件.exe,C+直接被编译成底层平台的二进制机器码,由CPU执行,是与平台相关的。 三、结束语 对于C+程序设计语言和JAVA程序设计语言中的不同之处,还有很多,在此就不一一列举了。弄清楚它们之间的区别,对于初学者来说是一件很重要的事情。虽然在本文中尽力做到只比较语言的语法语义特性,但在适当的环境中考察它们是很重要的。这些语言为不同的目标开发出来,是为了以不同的途径解决不同的问题的,并在不同的开发环境中被应用。虽然语言和它们的开发环境体现了彼此的一些特性,但它们是为了满足不同的需要而建立的,就像我们在对比这些特性时看到的那样。C+的目标是强大的功能和控制能力,代价是复杂性提高;Java的目标是兼容性和分布式应用,为此不惜牺牲一些运行速度。程序员们喜欢用最新的程序设计语言,并希望第一个掌握它。因此可以说“Java并不是最新的OOP语言”,在未来的几年里,一些人会开发出更新的语言! 参考文献: 1孟威主编.C+程序设计教程第3版,机械工业出版社 2朱红主编.C+程序设计教程(21世纪高等计算机教育实用规划教材),清华大学出版社 3孙淑霞主编.C/C+程序设计教程,电子工业出版社 4张克军主编.Java程序设计教程,人民邮电出版社 5郎波主编.Java语言程序设计,清华大学出版社    1 做教师的主人,投入教学改革从理论上讲,计算机基础课是和数学物理一样的公共基础课,不同的是计算机技术日新月异,社会需求千差万别,教学对象程度参差不齐,无法使这门课程做到一本教材、一个模式,无法使课程内容不变、教案不变、习题不变。所以,这门课程的教学改革是一个永恒的主题,需要教师全心的投入和不懈的努力。我的教学历程一直与计算机基础教学相关,也一直陪伴计算机教学改革如火如荼的年代。不论是“黑板加粉笔”的变革,还是网络与多媒体技术的快速渗透,都需要教师以极大的热情和精力投入到改革的整个进程中,配合学校的教改规划,进行教学体制、课程内容、教材、教学方法和教学手段等多方面的改革活动。在参与教改的实践中,我的主要工作和体会如下:1. 1做好电子教案,改革教学手段随着计算机技术的发展,教学手段的改革势在必行。20世纪90年代末期,随着生源的扩大,课堂人数由原来的几十人猛增到几百人,课堂教学无法再用“黑板加粉笔”进行。在此情况下,我首先制作了计算机应用基础课的电子课件并应用于教学中,该课件的使用在我校的课堂教学改革中起到了促进作用,在“211工程”验收中起到了良好的带头作用,也得到了学校的肯定和学生的好评。之后,为了尽快推动教学手段的改革,应学校人事部门的安排,我多次为本校教师进行制作课件的培训工作,为教改尽了自己的一份责任。1999年在我校的电子课件评比中获一等奖,在教育部主持的“99CIETE全国多媒体教育软件大奖赛”中获优秀奖。同时,我先后三次主持我校计算机基础教学方面的教改课题,开发了计算机辅助教学软件,获得了校级、部级多项奖励。投入这些教改工作,尽管花费了很多时间和精力,但是不同程度地推动了该课程教学改革的进程,同时也把自己的对课程的理解、对教学的经验体现在这些成果中,既方便了别人,也提高了自己
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号