1. 一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。类似c++中对象指针。
2. C++通常在类外定义方法,定义在类内会生成内联方法(编译器也会干预),JAVA所有方法都定义在类内,由编译器决定是否内联。
3. 不应该返回可变对象的引用。这样会破坏类的封装性,应该返回对象的clone()。
4. 方法可以访问该类的任何一个对象的私有域,不仅仅是本对象的。
1 | class User { |
5. final大都用于基本类型或者不可变类。用于可变类会给人造成误解,因为本质上只是这个引用变量不可变,而他所指向的对象仍然可以改变。
6. 可以使用对象调用静态方法(类方法),对象也可以访问公有的静态变量,但是实际访问的访问的都是类的方法和变量。并不建议使用。
7. 每个类都可以有main()方法。根据运行时的主类来确定执行那个main方法。
8. JAVA参数只有值传递。对象参数传递的是引用,本质也是值传递。
9. 成员变量没有显式赋值的话,会被赋为默认值。而局部变量使用前必须初始化。
10. C++中一个构造器不能调用另一个构造器,JAVA可以。
11. 静态初始化块会在类加载的时候执行,初始化块会在构造对象的时候执行。调用构造器的基本步骤:
- 所有数据被初始化为默认值。
- 按照类声明中出现的次序依次执行所有的域初始化语句和初始化块。
- 执行构造器主体。如果调用其他构造器,则执行其他构造器。
12. finalize()方法会在垃圾回收器清除对象之前调用。
14. 子包和父包没有关系,使用 * 可以导入本包所有的类,但是不能导入子包中的类,两者是独立的。
15. JAVA访问修饰符。
- private — 只有本类中可以访问。
- default(默认,不写)— 本包中的类可以访问。
- protected — 本包中的类及其子类(包外也可以)可以访问。
- public — 所有的类均可访问。