NO POINT没有指针,但有引用(引用实质上也是指针,只是一种不可计算的指针)
Index check 数组有下标检查
Auto memory management 内存自动管理
函数必须在类中(不能像c++函数可以游离在类之外)
传值=形参+实参(从90年开始就不提形参、实参的概念啦)
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++是静态邦定
这是我在看书和视频教学上的一些积累,如果有不正确的地方请指正,有没说到的地方希望能添加。