2024年10月10日 09:56

This commit is contained in:
许大仙 2024-10-10 01:56:53 +00:00
parent 7ddf28cc8f
commit 41dc59c56c
2 changed files with 38 additions and 0 deletions

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 75 KiB

View File

@ -824,3 +824,37 @@ int main() { // 定义主函数
> [!NOTE]
>
> C++ 是 C 语言的继承者和扩展,它保留了 C 语言的优势,并引入了更多现代编程语言的特性,使得它在更广泛的应用领域中得到应用。
## 5.3 C 语言和 Java 语言的对比
* C 语言 和 Java 语言的软件设计思想对比,如下所示:
> [!NOTE]
>
> * ① Java 语言编写的应用是直接运行在 JVMJava 虚拟机)上,体现了`分层`的软件设计思想;并且,这种`分层`的软件设计思想给 Java 语言带来了`跨平台性`和`自动内存管理`等方面的功能。
> * ② C 语言编写的应用是直接运行在操作系统之上,其设计哲学是:`简洁、高效、直接控制底层`。
![](./assets/10.svg)
* 虽然 C 语言和 Java 语言有很多相似之处,但在设计理念、运行环境、内存管理等方面有显著差异,如下所示:
| 对比角度 | C 语言 | Java 语言 |
| ---------------- | ----------------------------------------------------- | ------------------------------------------------------- |
| **编译与解释** | 编译型语言,源代码编译为机器码直接执行,效率高。 | 解释与编译结合,源代码编译为字节码,通过 JVM 解释运行。 |
| **平台依赖性** | 与操作系统和硬件平台紧密结合,跨平台能力较弱。 | 通过 JVM 实现跨平台,"编写一次,到处运行"。 |
| **内存管理** | 手动管理内存,需显式分配与释放,容易出现内存泄漏。 | 自动垃圾回收,简化内存管理,降低内存泄漏风险。 |
| **指针** | 支持指针,能直接操作内存,但可能导致安全问题。 | 不支持指针操作,避免内存安全隐患。 |
| **编程范式** | 过程化编程,主要通过函数调用组织程序。 | 完全的面向对象编程,一切皆为对象。 |
| **异常处理** | 不支持异常处理,错误处理通过返回值或全局变量实现。 | 提供强大的异常处理机制,通过 try-catch-finally 块处理。 |
| **标准库与生态** | 标准库简洁,需大量使用第三方库开发复杂应用。 | 标准库丰富,拥有庞大生态系统和社区支持。 |
| **运行时性能** | 直接编译成机器码,性能高,适合高性能要求的场景。 | 运行在虚拟机上,性能稍低,但通过 JIT 等优化提升效率。 |
| **多线程支持** | 依赖操作系统 APIpthread多线程编程较为复杂。 | 内置多线程支持,提供 Thread 类和并发工具类。 |
| **应用场景** | 系统级编程,如操作系统、嵌入式系统、驱动程序等。 | 企业级应用、Web开发、Android开发、大数据处理等。 |
> [!IMPORTANT]
>
> 总结而言:
>
> * ① C 语言适合底层编程、系统级开发,性能高、控制力强,但对程序员的要求也更高。而 Java 语言则更适合应用层开发,拥有丰富的库和工具支持,开发效率更高,并且由于自动内存管理和异常处理,编写的代码通常更加安全和健壮。
> * ② 两者各有优势,选择使用哪种语言应根据项目需求和开发环境来决定。