java的认知
java与C++的异同
共同点:
都使用了面向对象的思想(例如封装,继承,多态等),并且两者具有很好的可重用性。
不同点:
1.java为解释性语言(源代码通过java编译器编译成字节码交由JVM解释执行),C/C++为编译型语言(源代码经过编译和链接后生成可执行的二进制编码).
注:java的执行速度比C/C++的执行速度慢,java能够跨平台执行,C/C++不可以。
2.java纯面向对象(所有代码在类中实现,除基本类型外,所有类型都为类),C++兼具面向过程和面向对象编程的特点。
注:java不存在全局变量或者全局函数,C++可以定义全局变量和全局函数。
3.java中没有指针的概念,防止了C++语言中操作指针可能引起的系统问题,使程序变得更加安全。
4.java不支持多继承(java引入了接口的概念,可以同时实现多个接口,也具有多态性)
C++支持多继承
5.C++需要开发人员去管理对内存的分配,包括申请和释放。(释放资源的代码放在析构函数中)
java自己提供了垃圾回收器来实现垃圾的自动回收,不需要显示的管理内存的分配。(java不存在析构函数,引入了finalize()方法,当垃圾回收将要释放无用内存时,会首先调用该方法)
6.C++支持运算符重载;java不支持运算符重载
7.C++支持预处理,java没有预处理器,不支持预处理功能(包括头文件和宏的定义)
注:java提供了import 机制与C++的预处理器功能类似。
8.C++支持默认的函数参数,java不支持默认函数参数。
9.C++支持goto语句,java不支持goto语句(java中goto是保留关键字)。
注:goto语句也称为无条件转移语句,其一般格式如下:
goto 语句标号; 其中语句标号是按标识符规定书写的符号, 放在某一语句行的前面,标号后加冒号(:)。语句标号起标识语句的作用,与goto 语句配合使用。
如: label: i++;
loop: while(x<7);
10.C++支持自动强制类型转换,java不支持强制类型转换(java需要开发人员显示的强制类型转换)。
注:java引入泛型的概念,更好的处理类型的问题。
11.java具有平台无关性。(每种类型分配固定的长度)
C++具有平台性。(同一种类型在不同的平台分配的长度不同)
12.java包含一些标准库,用于完成特定的任务,同时这些库简单易用,能够大大的缩短开发周期。(提供了访问数据库的JDBC库,用于实现分布式对象的RMI等标准库)
C++依靠一些非标准的,由其他厂商提供的库。