java与C++的区别

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++是静态邦定 

 

这是我在看书和视频教学上的一些积累,如果有不正确的地方请指正,有没说到的地方希望能添加。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值