如果有两个类 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)构造器无法改变所构造的对象类型,但静态工厂方法可以返回不同的类型,如所构造类型的子类对象。
原文:https://www.cnblogs.com/cbkun/p/11101577.html