• Java学习心得 (2)

    2007-09-07

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://jiazhou.blogbus.com/logs/8138113.html

    ● java禁止块嵌套变量定义。
    ● boolean值一定是false或true,不可为1或0。
    ● 在java中int整型占4个字节,与平台无关,而C++与目标机器和操作系统相关。
    ● 在java中没有unsigned类型。
    ● 返回可变对象时,要用到clone技术,该对象要支持clone,实现cloneable接口。
    ● 每一个类都可以有一个main函数,方便单元测试。
    ● static数据域用类名访问或static方法,不推荐后者。
    ● "string"+2结果是"string2"。
    ● Java中参数传递是值传递,即使是可变对象(值为对象的引用,此时最多改变原参数对象的状态)。
    ● 类域会自动初始化(0或false或null),而局部变量则不会!
    ● Java可直接初始化类数据域,C++则不行(有一个初始化列表,在java中没必要,因没有子对象,只有引用)。
    ● 构造器可调用另一个构造器,而C++不行。
    ● 目录与包名不一致,可能可以编译,但无法解释运行(找不到class文件)。
    ● 由于包的可见性,类中的数据一般都应该private。(现在有了包密封jar技术)。
    ● Java中的继承都是公有继承,并取消多继承(多余的机制)。
    ● Java子类不可访问超类的私有成员,可用公用接口(super.F())。
    ● Java的多态默认处理方式是动态绑定。
    ● 可将子类放入超类数组,取出时强制转换(先用instanceof检查)(不推荐,可考虑超类的设计)。
    ● 抽象类不一定包括抽象方法,包括抽象方法的类一定是抽象类。抽象类不能实例化,但可引用其非抽象子类的实例。
    ● getClass返回一个非空对象的类型名称。
    ● 定义类时最好重写equals、hashCode、toString方法,必要时加个clone。
    ● 接口无实例域,只有未实现的方法(默认公有)和常量(默认公有静态final),可继承。
    ● 内部类可访问外围类实例域,并由编译器为内部类构造器添加外围类引用(outerClassName.this)。
    ● 局部内部类只可访问final局部变量。
    ● 静态内部类没有访问外围类的特权。
    ● AWT将处理用户界面元素的任务交给目标平台本地GUI工具箱,“一次编写,到处运行”,但结果是:1. 外观依赖于平台。2. 可移植库小。 3. “一次编写,到处调试”。
    ● swing实现所有平台外观一致性、平台相关的bug少、丰富便捷的元素集合。
    ● 异常处理原则:早传递(throws),晚处理(catch)。不可替代简单测试。无需也无法处理系统error和runtimeerror。

    收藏到:Del.icio.us