如果有两个类 Employee 和 EmployeeTest 分别在 Employee.java 和 EmployeeTest.java(其中有 main 方法)中定义, EmployeeTest 依赖于 Employee , 则要编译运行有两种方法:
(1)使用通配符调用 Java 编译器: java Employee*.java , 所有与通配符匹配的源文件都会被编译为类文件.
(2)直接编译 EmployeeTest.java: java EmployeeTest.java ,Java 编译器发现 EmployeeTest.java 使用了 Employee 类时会查找名为 Employee.class 的文件, 如果没有找到就会搜索 Employee.java 进行编译. 如果 Employee.class 文件存在, 但是 Employee.java 比它更新, 也会重新编译这个文件.
- Employee.java:
- public Employee(String n, double s, int year, int month, int day) {
- name = n;
- salary = s;
- LocalDate hireDay = LocalDate.of(year, month, day);
- }
这种方式与传入 LocalDate 类型参数相比哪种更好?
实例方法都会获得一个隐式参数, 这个参数就是调用方法的对象的引用, 在方法中使用 this 关键字可以获取这个引用参数, 在方法内会在实例方法调用和域前自动添加 this 引用.
是否将某个方法设置为内联方法是 Java 虚拟机的任务, 即时编译器会监视调用那些简洁, 经常被调用, 没有被重载以及可优化的方法.
不要编写返回引用可变对象的访问器方法, 如需返回一个可变对象的引用, 应该首先对它进行克隆(clone).
实例方法可以访问所属类的所有对象的私有数据.
final 修饰符大都应用于基本类型域或不可变类的域(如果类中的每个方法都不会改变对象, 这种类就是不可变类, String 类就是一个不变类).
静态变量使用的比较少, 静态常量用的比较多. 最好不要将域设计为 public, 但公有常量 (即 final 域) 却没问题.
两种情况使用静态方法:
(1)方法不需要访问对象状态, 所需参数都是显式参数.
(2)方法只需要访问类的静态域.
使用静态工厂方法而不是构造器创建对象的两种情况:
(1)构造器的名字必须与类名相同, 但是希望使用更有意义的不同方法名创建对象.
(2)构造器无法改变所构造的对象类型, 但静态工厂方法可以返回不同的类型, 如所构造类型的子类对象.
来源: http://www.bubuko.com/infodetail-3106401.html