关于Java与C++的探讨

时间:2022-09-02 02:18:41

【摘 要】当前大部分高校都设有JAVA与C++课程课程,其教学效果的好坏,直接影响到学生的程序设计能力和对高级语言知识的学习兴趣。Java是从C++基础之上发展过来的,它们有许多相似之处,学生在学习这两门语言时容易走入误区,而一些教师又盲目教学,因此学生在学习过程中云山雾水不知所措,在实际操作中总是出现这样那样的程序错误。在这里有必要把两者的一些区别进行分析,目的在于培养学生独立编写软件的能力和独自思考创新的能力,进而提高学生的就业竞争力。文章针对教学中发现的两者之间几个容易混淆的内容,对它们进行了简单阐述,希望对大家的学习有所帮助。

【关键词】Java;C++;混淆探讨

一、引言

笔者研究很多大学在第一学期开设C++课程,在接下来的学期会接着开设与JAVA相关的课程,只是课程名称不同而已。在学习过程中发现,学生在学习C++基础上接着学习Java课程,并没有想像的那样学起来比较容易。许多学生在使用Java时会不自觉地混入C++的语法,让很多人都感到头疼。在这里对于Java与C++两者相似但又明显不同之处作一简单阐述,希望能对学生的学习或是教师的教学有所帮助。

二、Java与C++不同之处

1.数据类型与变量

对于大部分设计语言,数据类型与变量都是很重要的基本概念。在C++中数据类型除了基本类型外,还有枚举类型、结构类型、指针类型等。数据类型与变量可以是独立的,不属于任何一个函数或是一个类,C++允许将变量定义为全局的。Java是完全面向对象的语言,所有函数和变量必须是类的一部分。除了基本数据类型之外,其余的数据类型都作为类处理,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。此外,Java中取消了C++中的结构和联合,消除了不必要的麻烦。另外Java中char类型使用国际通用的16位Unicode字符集,所以能自动表达大多数国家的字符。

2.程序结构与main()

在C++中应用程序都是由若干个函数组成的,但必须有且只有一个main函数。而每一个Java应用程序是由若干个类组成的,但必须有且只有一个public类,且类名称必须与程序的文件名完全相同,这个类称为主类。每个类可以定义多个方法,所有类中必须有一个main方法,也只能有一个。在C++应用程序中,main函数的定义语句首部是main,它不属于任何一个类,是独立的。根据需要,这个main函数定义的首部可以写成其他形式,如void mian(){},或给mian函数带个参数。C++应用程序从main函数开始执行。这个main方法的定义首部一般是固定的(只有public与static的位置可以调换),也就是说public、static、void、String[]等关键词全都要有,且不能错,也不能省略参数,要求非常严格。Java解释器在没有生成任何实例的情况下,以main()方法作为入口来执行程序。

3.数组

数组是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种形式。C++与Java在使用数组时定义方法与开辟内存单元上有本质不同。在C++中,无论是一维数组还是二维数组,定义时要指明大小与类型。例如int m[4],n[2][3];在声明数组的同时也开辟了内存空间,且是连续的空间。但是,在Java中,定义数组与开辟内存空间必须分开处理。在定义数组时不能指明大小,例如:int myArray[],m[][];这个语句只能说myArray与m是数组,myArray是一维数组,m是二维数组,但是没有大小,因此在内存中无法开辟内存空间。如果要开辟内存空间,必须使用new运算。例如int myArray[]=newint[10];这个语句的含义是,定义了一个数组myArray,在内存中开辟了能存放10个整型数据的连续空间,数组myArray指向了这个连续空间的首地址。变量myArray与10个连续单元是不在一起的。

4.关于指针

Java不再使用指针.指针是C和C++中最灵活,也最容易产生错误的数据类型.由指针所进行的内存地址操作常会造成不可预知的错误,同时通过指针对某个内存地址进行显式类型转换后,可以访问一个C++中的私有成员,从而破坏安全性.而Java对指针进行完全地控制,程序员不能直接进行任何指针操作。

5.继承

关于继承Java与C++都能从父类继承派生出子类,应在用上有还是不同之处。首先继承的语句及访问控制不同。在C++中class son:public class father{}就表示子类son公有继承父类father。继承时的访问控制:public、private、protected,会改变父类中的成员在子类中的访问属性。而在Java中继承是用关键词extends来处理的,例如class son extends father{},继承没有访问控制,因此不会改变从父类继承过来的成员的访问属性,这样可以减少很多访问控制上的麻烦。第一关于多重继承。C++支持多重继承,但Java不支持。多重继承是C++的一个特征,它允许多父类派生一个子类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。Java不支持多重继承,但允许一个类继承多个接口,也允许一个接口继承多个接口,实现了C++多重继承的功能,又避免了C++中的多重继承实现方式带来的诸多不便。第三对于访问父类构造函数或方法。在C++语言中,在子类的构造函数中是通过调用父类的构造函数来给父类成员变量初始化的。如果在子类中重写了父类的方法,又想在子类中调用父类的该方法,则可以使用”::”作用域范围运算符来处理,即父类名::函数名。在Java语言中,是通过super这个关键词来调用父类的构造方法或普通成员方法的。在子类的构造方法中必须通过super()或是super(x)来调用父类的构造方法,并且这条语句必须出现在子类构造方法的第一条位置。在子类方法中,通过“super.方法”来访问父类中被重写过的方法,通过“super.成员”变量来访问父类中的成员变量。

三、结束语

Java与C++都属于最近普遍流行的高级语言,有很多相同的地方。在学习和使用过程中要注意两者的区别,以上只是分析了部分区别,其次还有内存管理、多态、类、函数没有默认参数等方面的区别。为了在C++基础上更好地学好Java,在学习过程中要学会比较、归纳与总结,这样才能更好掌握Java的精华,才能为学习Java高级技术打下结实的基础。

上一篇:彰武县乡镇企业融资困难问题及对策研究 下一篇:私营企业劳动保险管理问题研究