问答
尝试阅读EmployeeTest.java代码。并回答:
1. raiseSalary方法有什么用?
提高每个雇员的工资(5%的增长)。
2. 代码中3个Employee对象调用raiseSalary方法所执行的代码一样吗?返回结果一样吗?为什么?
执行的代码一样,返回结果不一样,因为他们的基础工资不同,在涨幅相同的情况下自然结果不同。
3. 能不能将raiseSalary定义为static?结合该例子,你觉得一般来说什么样的方法应该声明为static?
在本例中不能,因为salary不是静态的,静态的方法仅能访问静态的数据。一般有两种情况:(1)有时希望定义一个方法,使它的使用完全独立于本类的任何对象;(2)当一个方法需要初始化加载,或者是经常被调用的时候也可以加上static。
4. 进阶要求:使用Java8中的日期类,替换掉Employee类中的hireDay。
替换后运行图片如下:
修改后的代码如下(已经删除了原先的所有的注释,现在存留的注释都表示的是该位置上的原有的代码):
import java.util.*;
import java.time.DayOfWeek;
import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
public class EmployeeTest
{
public static void main(String[] args)
{
Employee[] staff = new Employee[3];
staff[0] = new Employee("Carl Cracker", 75000, 1987, 12, 15);
staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1);
staff[2] = new Employee("Tony Tester", 40000, 1990, 3, 15);
for (Employee e : staff)
e.raiseSalary(5);
for (Employee e : staff)
System.out.println("name=" + e.getName(