您的位置:首页 > 编程语言 > C语言/C++

java与C++的区别

2006-09-23 13:32 309 查看
NO POINT没有指针,但有引用(引用实质上也是指针,只是一种不可计算的指针)

Index check 数组有下标检查

Auto memory management  内存自动管理

函数必须在类中(不能像c++函数可以游离在类之外)

传值=形参+实参(从90年开始就不提形参、实参的概念啦)




public class PassObject...{




 Statci void f(Letter y)...{


  y.c='z';


 }




 public static void main(String[] args)...{


  Letter x=new Letter();


  x.c='a';


  System.out.println("1:x.c:"+x.c);


  f(x);


  System.out.println("2:x.c:"+x.c);


 }


}   //在c++中这里的f(x) 是拷贝构造,由x拷贝构造 f(letter y)中的y;


    //而java只是一个引用而已 相当于 对象x的地址赋给y.

int x=0,y=1,z=2;
String sString="x,y,z";
System.out.println(sString+x+y+z);    //x,y,z012
System.out.println(y+z+sString);      //3x,y,z

无goto用break和continue带标号(label) label给循环命名

初始化和清除。java中没有析构函数  有自己的垃圾处理机制
 c++的缺省构造函数 new时可以不写后面的括号(例:Rock为一个类; new Rock();可写为new Rock;),但是java中必须有。

this   调用这个函数的对象就是this(c++与java中一样)

java中 在一个构造函数中可以调用一次另外的构造函数 this(……)

java 可以在定义时初始化《定义初始化》 (如:boolean b=true;char c='x')定义初始化 是在构造函数之前初始化 。也可初始化对象,可赋变量值,但变量必须在它之前定义;
 但在c++中不可以,c++中只能在构造函数中初始化

java中 String s 不是对象,是引用

 

java 中有静态初始化块 static{……}
         定义初始化块 {……}   在static块后,构造函数前 执行



java 调用父类的函数或成员变量用  super.函数名称  ;    而c++用的是父类的名称:函数名称

 

name hiding 在c++会出现。而java 中不会出现????????

 
java有interface

java的inner class(内部类)很齐全  与其它的内部类不同。java的内部类是外部类的成员类(有成员函数、变量的特点,如内部类可以访问外部类的私有变量。) ,而c++的不同

错误机制比c++好

 

c++中有以下东西而java没有:
 多继承、虚继承、模板(java有object的公共根结构,所以java的容器很好做,只要做一个能放object的容器就能放所有的对象)、运算符重载(容易引起误解)

本质上的不同点:java编译后生成生是类描述性文件,c++编译完后生成二进制代码(就没有OOP的特性了)

 

java的修饰符是每句都必须有;而c++是可以用一个修饰符、冒号,后面的语句都可以被它修饰

 

java的缺省的邦定是动态邦定;而c++是静态邦定 

 

这是我在看书和视频教学上的一些积累,如果有不正确的地方请指正,有没说到的地方希望能添加。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息