c++和java区别

 我来答
小小先生213
2020-09-24 · TA获得超过122个赞
知道答主
回答量:51
采纳率:0%
帮助的人:6.2万
展开全部

1. 变量和类型

1.1 Java没有无符号整数。(无符号右移在Java中强制用三个右尖括号表示)。
1.2 Java有内置类型String,而C++没有。C++的std::string是可变的,类似于Java的StringBuffer。
1.3 C++的整型随机器的位数而变化,但是Java不会。(C++的int在16位机器上16位,32位级以上为32位。long在32位及以下为32位,64位机器上为64位。)
1.4 Java字符串在内存中以Unicode存储,C++与源码的编码相同。
1.5 Java中不存在指针。Java的引用是功能弱化的指针,只能做“调用所指对象的方法”的操作。
1.6 Java的Stream对象(除了PrintStream)功能较单一,只能按字节读写,需要Reader或者Writer的辅助。C++的任何流都可以按字节、字符串、整形的方式读或者写。
1.7 Java是少数几种不能用双等号比较字符串的语言。
1.8 Java的泛型参数不允许是基元类型。(坑)
1.9 Java强制局部变量初始化。

2. 类机制

2.1 Java是完全面向对象的,所有方法都必须写在类中。
2.2 Java强制异常规约。
2.3 Java单根继承,所有对象都继承自Object。并且提供接口机制。
2.4 Java在覆盖时默认为虚函数。
2.5 Java没有默认参数。
2.6 Java中没有运算符重载,和转换函数。
2.7 Java无引用传值。(标准库中一般用Boxing代替。)
2.8 Java没有Struct或者Union。
2.9 Java可以委托构造,而C++14才加入这个特性。
2.10 Java的对象(包括数组)存放于堆上,用new实例化。C++可以选择存放于栈上或者堆上。
2.11 Java可以定义abstract类和final类,即必须被继承,或者无法被继承。C++直到C++1?才支持这个特性。
2.12 Java强制一个文件中只能有一个public的类/接口,并且文件路径强制为它的包名和类名。


3. 其它语言特性

3.1 Java没有delete运算符,由于有gc托管,无需delete。
3.2 Java没有typedef,以及任何和它作用相同的语法。
3.3 Java没有宏。(另一方面这也是种好处,宏是另一个万恶之源)。
3.4 Java使用点运算符做C++用::运算符的事情。而Java的::运算符可以将一个静态函数或者带着对象的动态函数变成一个闭包(Java8)。
3.5 Java的lambda表达式在Java8中被引入,C++是从C++11。
3.6 C++11中引入了range循环,Java是从Java5。
3.7 C++在查找名字时只查找当前代码文件中那行以上的部分。而Java的查找范围是整个项目。(这就是为什么C++需要include而Java不用。)
3.8 Java的标准库比较丰富(尤其是带GUI)。C++如果要实现相同的功能,除了第三方库之外,可以调用系统的api。
3.9 Java在8之前,switch不支持字符串。C++从11起支持短字符串的Switch(长度4字节之内,会映射成int来判断)。
3.10 由于Java是半编译半解释的,运行速度略慢。jvm启动速度不是一般的慢。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式