关于java和c++语法区别的体会
-
面向对象
Java是完全面向对象的语言,所有的代码都要写在类中,即使是主函数public static void main(String[] args){}也要放在主类中。
除了基本数据类型,其他数据在Java中都是类(数组,接口,类),同时Java提供了基本数据类型对应的包装类。
Java中对象的创建和初始化是分离的,通过new创建对象,内存分配在堆上,声明对象引用,内存分配在栈上,最后初始化对象引用。
Java 不支持多重继承,但允许一个类实现多个接口,而c++支持多重继承。
Java中自动进行无用内存回收操作,不再需要程序员进行手动删除,而 C++中必须由程序释放内存资源。 -
字符串:在 Java 中字符串是用类对象(String 和 StringBuffer)来实现的,且java中String是不可变的。Java字符串在内存中以Unicode存储,C++中字符串与源码的编码相同。
-
在参数传递时,Java中存在值传递和引用传递,是根据具体传递的数据类型决定,不需要显式声明;在C++中,存在值传递、引用传递和指针传递,需要使用&或者*,传递实参的地址。
-
Java强制一个文件中只能有一个public的类/接口,并且文件路径强制为它的包名和类名
-
数据类型转换:在 C 和 C++中,有时会出现自动强制类型转换问题。例如,在 C++中可将一个浮点值赋予整型变量,并去掉其尾数。Java 中,高级数据类型转换为低级时,必须由程序显式进行强制类型转换。
-
Java有大量集合接口提供对集合元素的共性操作,如增删查改集合元素。集合类封装了底层常用的数据结构,无需知晓底层具体的实现就可以方便的操作集合元素。只需要import java.util包,非常方便。
-
Java中使用super指代父类的域变量或方法,进行构造方法的继承调用。
-
Java抽象类和抽象方法使用abstract关键字,对于抽象方法,在抽象类中只指定方法名及类型,而不写实现代码。抽象类必定要派生子类,若派生的子类是具体类,则具体子类中必须实现抽象类中定义的所有抽象方法;而相对应的在c++中虚函数的声明处加上 virtual 关键字,子类中必须有同名的虚函数,并且它们是覆盖关系。