c++和java区别
c++和java区别在于:c++是一种计算机高级程序设计语言,由C语言扩展升级而产生;而Java是一门面向对象的编程语言,不仅吸收了c++语言的各种优点,还摒弃了c++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。c++和java区别可以从以下几个方面来总结:1. 变量和类型;2. 类机制;3. 其它语言特性。
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启动速度不是一般的慢。
最后,推荐我们的管理工具给大家。