熟悉c语言和c++语言的读者一定想搞清楚这个问题,实际上,java确实是从c语言和c++语言继承了许多成份,甚至可以将java看成是类c语言发展和衍生的产物。比如java语言的变量声明,操作符形式,参数传递,流程控制等方面和c语言、c++语言完全相同。尽管如此,java和c语言,c++语言又有许多差别,主要表如下几个方面:
java中对内存的分配是动态的,它采用面向对象的机制,采用运算符new为每个对象分配内存空间,而且,实际内存还会随程序运行情况而改变。
程序运行中 java系统自动对内存进行扫描,对长期不用的空间作为”垃圾”进行收集,使得系统资源更充分地利用.按照这种机制,程序员不必关注内存管理问题,这使java程序的编写变得简单明了,并且避免了由于内存管理方面的差错而导致系统出问题。
而c语言通过库函数来分别实现分配和释放内存空间,c++语言中则通过运算符来分配和释放内存。
在c和c++这种机制中,程序员得非常仔细地处理内存的使用问题。
java不在所有类之外定义全局变量,而是在某个类中定义一种公用静态的变量来完成全局变量的功能。
java不用goto语句,而是用try-catch-finally异常处理语句来代替goto语句处理出错的功能。
java不支持头文件,而c语言和c++语言中都用头文件来声明类的原型、全局变量、库函数等,这种采用头文件的结构使得系统的运行维护相当繁杂。
java不支持宏定义。java只能使用关键字final来定义常量。
java对每种数据类型都分配固定长度。比如,在java中,int类型总是32位的,而在c语言和c++语言中,对于不同的平台,同一个数据类型分配不同的字节数,这使得c语言造成不可移植性,而java则具有跨平台性(平台无关性)。
结构和联合的处理。java中根本就不允许类似c语言的结构体(struct)和联合体(union)包含结构和联合,所有的内容都封装在类里面。
java不再使用指针。指针是c语言和c++语言中十分灵活,也容易产生错误的数据类型。
java语言编写的类库可以在其它平台的java应用程序中使用,而不像c++语言单单运行于单一个平台。
在b/s开发方面,java要远远优于c++。
二、折叠优劣势
优势:java适合团队开发,软件工程可以相对做到规范。由于java语言本身的严格语法的特点,java语言无法写出结构混乱的程序。这将强迫程序员的代码软件结构的规范性。这是一个很难比拟的优势。
劣势:j2ee的架构很舒服,一版软件可以做满意,但是很不适合互联网模式的持续不断修改。
互联网软件工程管理上的不足,持续的修修补补导致架构的破坏。