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(),用来测试该类

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值