Thinking in java:对比C++和java,
Thinking in java:对比C++和java,
附录B 对比C++和java
1.java比C慢约20倍。
2.所有东西都必须置入一个类中,要用全局函数,可将static方法和数据成员置入一个类。
3.类定义结尾没有分号。没有类声明,只有类定义。
4.主类型(primitive type)boolean、char...
条件表达式必须是boolean,char是16位Unicode字符,静态字符串会自动转换成String对象。
5.>>>代表逻辑右移,插0,>>代表算术移位,插符号位。
6.数组有length成员,运行时会检查越界抛出异常。所有数组都在堆区,可以复制数组(只是复制数组句柄)。
7.非主类型的对象必须用new创建在堆区,不能在栈区创建。
8.不必进行提前声明,可以在定义前使用。
9.没有预处理机。
10.用包代替命名空间。
11.类成元的对象句柄自动初始化为null,基本类数据成员也会初始化为默认值。static和非static成员等同。
12.new创建对象,返回一个引用(句柄),引用可以重新赋值。
13.如果定义了一个非默认构造函数,就不会有自动生成的默认构造函数。没有拷贝构造,因为所有变量都是按引用传递。
14.没有析构函数,变量不存在作用域问题。
15.所有对象都是从根类Object继承的。
16.垃圾收集仍有可能产生内存泄露,分配存储空间的固有方法,finalize()???
17.内建多线程支持,继承Thread类,用syschronized作方法的类型限制符,使得同时只有一个线程能使用该对象。
18.public、private、protected包含在每个类成员定义里,默认是friendly,只有同一个包的元素可以访问。除了多线程很少用private。protected可有继承类或包内其它元素访问。
19.类嵌套,内部类有一个指向外部类的句柄。
20.final方法类似于inline,建议进行内联。
21.extends关键字表示继承,super调用父类方法,也可用super调用父类构造函数。
super(); super.f();
22.抽象类abstract既可包含抽象方法,也可包含具体实现。interface只有抽象方法,没有数据成员,用implements实现。抽象类不能实例化,子类要是非抽象类,必须实现所有抽象成员。接口中的方法必须是public,成员变量默认静态常量static final。
23.没有virtual关键字,所有非static方法都会动态绑定。
24.有方法重载,没有运算符重载,所以String不支持+,+=。
25.java标准库。联网、数据库(JDBC)、多线程、分布式对象(RMI、CORBA)、压缩。
26.更健壮。
对象句柄初始化为null
检查句柄、出错时抛出异常
检查数组越界
垃圾收集
傻瓜式异常处理机制
内建多线程支持
附录C java编程规则
1.类名首字母大写,方法首字母小写,包名全部小写。
2.可以考虑每个类置入一个main(),用来测试该类
相关文章
- 暂无相关文章
用户点评