OnJava00--Java与C++的区别
OnJava00--Java与C++的区别
1、前言
《On Java》书中很多地方作者都琐碎地比较了Java与C++的差异点,特此单独用一篇笔记记录。
2、Java与C++的区别
(1)是否有基类:
- Java的所有类都继承自Object -- 单根层次结构,有利于实现垃圾收集器
- C++无法确保所有对象都属于一个基类
(2)垃圾回收:
- C++必须在编码时就明确何时销毁对象,否则会造成内存泄漏
- Java底层支持垃圾收集器,会自动找到无用的对象并将其销毁
(3)传值和传引用
- C++支持传值,也支持传引用
- Java中只有传值,对于对象的引用,参数传递的是引用的一份复制,所以方法中修改引用所指向的对象,在方法结束后并不生效
(4)寄存器
- C/C++允许向编译器申请分配寄存器,而Java不能直接控制寄存器的分配。
(5)基本类型的默认值
- 对于基本类型的局部变量,如果未赋值,Java会抛出编译错误,而C++编译器通常只是告警
(6)运算符重载
- Java:不支持(只有String可以+和+=)
- C++:支持
(7)Java没有sizeOf
- C/C++中,sizeof()操作符返回数据项分配的字节数,因为相同的数据类型在不同机器上可能有不同的大小。
- Java所有的数据类型在所有机器中的大小都相同,所以不需要sizeof
(8)Java的finalize()与C++的析构函数
- C++的析构函数,在对象被销毁时总是会被调用
- 而Java中,对象并不总是被垃圾收集。
(9)数组越界
- C/C++:越界时会默默接受,并允许你访问所有内存
- Java:抛出运行时异常
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!