JAVA与C、C++比较

发布于:2023-01-20 ⋅ 阅读:(272) ⋅ 点赞:(0)

浅比较Java与C、C++

1. 语言类型

C/C++是Compiled Language,而Java兼顾了Compiled Language和Interpreted Language的特点。

C/C++: Source Code(*.c, *.cpp, *.h)首先通过Preprocessor预处理生成Include Header、Expand Macro(*.i, *.ii),再通过gcc、g++等Compiler Collection编译生成Assembly Code(*.s),然后通过Assembler汇编,生成Machine Code,最后通过Lineker链接生成当前平台的Executable Machine Code。

预处理-编译-汇编-链接

Java: Java舍弃了预编译器,但提供了import来代替预编译功能。Source code(*.java)可直接通过javac command编译,生成Byte Code(*.class),再通过java command在Java Virtual Machine上解释执行,生成特定平台(Windows, MacOS, Linux, Unix, etc.)的Executable Machine Code。

优点:Java能够跨平台运行。

缺点:Java的运行效率比C/C++等编译型语言更低。

2. 指针

C:本着相信程序员的原则,C提供了Pointer给程序员进行底层操作。

C++:弱化了Pointer,提出了引用&的概念来简化代码,部分代替Pointer的作用。

Java:完全舍弃了Pointer。

优点:有效防止了指针引起的系统问题,从而使程序变得更加安全。

缺点:灵活性降低,不支持底层操作。

3. 多重继承

C++:支持多重继承。

Java:不支持多重继承,但引入了Interface的概念,可以同时implements多个Interface,且具有多态的特性,从而在实现了多重继承的功能的同时又避免了多重继承使用麻烦、编译程序实现难等的缺陷。

4. 操作符重载

C++:操作符重载是C++的突出特征。

Java:不支持操作符重载,但提供了类来实现操作符重载的功能,保持了语言的简洁性。

5. 自动内存管理

C++:开发人员需要去管理对内存的分配(new、delete),提供了析构函数~,一般在析构函数中进行内存回收的操作。

去管理对内存的分配(new、delete),提供了析构函数~,一般在析构函数中进行内存回收的操作。

Java:新增了垃圾回收器的功能。Java保留了new操作符,通过new操作符将所有类对象建立在堆栈上。当某个类对象不再被用到时,程序员不需要手动进行delete的内存回收操作,只需要通过.close()等类方法添加删除标签,闲置的垃圾回收器会在后台运行,从而减少程序员的负担。


网站公告

今日签到

点亮在社区的每一天
去签到