corejava[读书笔记]第四章
2013-07-24 21:38
190 查看
例4-2
name=Carl Cracker,salary=78750.0,hireDay=Tue Dec 15 00:00:00 CST 1987
name=Harry Hacker,salary=52500.0,hireDay=Sun Oct 01 00:00:00 CST 1989
name=Tony Tester,salary=42000.0,hireDay=Thu Mar 15 00:00:00 CST 1990
例4-3
执行结果:
name=Tom,id=1,salary=40000.0
name=Dick,id=2,salary=60000.0
name=Harry,id=3,salary=65000.0
Next available id=4
例4-4
执行结果:
Testing tripleValue:
Before: percent=10.0
End of method: x=30.0
After: percent=10.0
Testing tripleSalary:
Before: salary=50000.0
End of method: salary=150000.0
After: salary=150000.0
Testing swap:
Before: a=Alice
Before: b=Bob
End of method: x=Bob
End of method: y=Alice
After: a=Alice
After: b=Bob
例4-5
运行结果:
name=Harry,id=8638,salary=40000.0
name=Employee #8639,id=8639,salary=60000.0
name=,id=8640,salary=0.0
例4-6
例4-7
执行结果:
name=Harry Hacker,salary=52500.0
第四章所有代码完。
import java.util.*; /** * This program tests the Employee class. * @version 1.11 2004-02-19 * @author Cay Horstmann */ public class EmployeeTest { public static void main(String[] args) { // fill the staff array with three Employee objects 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); // raise everyone's salary by 5% for (Employee e : staff) e.raiseSalary(5); // print out information about all Employee objects for (Employee e : staff) System.out.println("name=" + e.getName() + ",salary=" + e.getSalary() + ",hireDay=" + e.getHireDay()); } } class Employee { public Employee(String n, double s, int year, int month, int day) { name = n; salary = s; //month-1 为什么? GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day); // GregorianCalendar uses 0 for January hireDay = calendar.getTime(); } public String getName() { return name; } public double getSalary() { return salary; } public Date getHireDay() { return hireDay; } public void raiseSalary(double byPercent) { double raise = salary * byPercent / 100; salary += raise; } private String name; private double salary; private Date hireDay; }执行结果:
name=Carl Cracker,salary=78750.0,hireDay=Tue Dec 15 00:00:00 CST 1987
name=Harry Hacker,salary=52500.0,hireDay=Sun Oct 01 00:00:00 CST 1989
name=Tony Tester,salary=42000.0,hireDay=Thu Mar 15 00:00:00 CST 1990
例4-3
package com.itquanta; /** * This program demonstrates static methods. * @version 1.01 2004-02-19 * @author Cay Horstmann */ public class StaticTest { public static void main(String[] args) { // fill the staff array with three Employee objects Employee[] staff = new Employee[3]; staff[0] = new Employee("Tom", 40000); staff[1] = new Employee("Dick", 60000); staff[2] = new Employee("Harry", 65000); // print out information about all Employee objects for (Employee e : staff) { e.setId(); System.out.println("name=" + e.getName() + ",id=" + e.getId() + ",salary=" + e.getSalary()); } int n = Employee.getNextId(); // calls static method System.out.println("Next available id=" + n); } } class Employee { public Employee(String n, double s) { name = n; salary = s; id = 0; } public String getName() { return name; } public double getSalary() { return salary; } public int getId() { return id; } public void setId() { id = nextId; // set id to next available id nextId++; } public static int getNextId() { return nextId; // returns static field } public static void main(String[] args) // unit test { Employee e = new Employee("Harry", 50000); System.out.println(e.getName() + " " + e.getSalary()); } private String name; private double salary; private int id; private static int nextId = 1; }
执行结果:
name=Tom,id=1,salary=40000.0
name=Dick,id=2,salary=60000.0
name=Harry,id=3,salary=65000.0
Next available id=4
例4-4
package com.itquanta; /** * This program demonstrates parameter passing in Java. * @version 1.00 2000-01-27 * @author Cay Horstmann */ public class ParamTest { public static void main(String[] args) { /* * Test 1: Methods can't modify numeric parameters */ System.out.println("Testing tripleValue:"); double percent = 10; System.out.println("Before: percent=" + percent); tripleValue(percent); System.out.println("After: percent=" + percent); /* * Test 2: Methods can change the state of object parameters */ System.out.println("\nTesting tripleSalary:"); Employee harry = new Employee("Harry", 50000); System.out.println("Before: salary=" + harry.getSalary()); tripleSalary(harry); System.out.println("After: salary=" + harry.getSalary()); /* * Test 3: Methods can't attach new objects to object parameters */ System.out.println("\nTesting swap:"); Employee a = new Employee("Alice", 70000); Employee b = new Employee("Bob", 60000); System.out.println("Before: a=" + a.getName()); System.out.println("Before: b=" + b.getName()); swap(a, b); System.out.println("After: a=" + a.getName()); System.out.println("After: b=" + b.getName()); } public static void tripleValue(double x) // doesn't work { x = 3 * x; System.out.println("End of method: x=" + x); } public static void tripleSalary(Employee x) // works { x.raiseSalary(200); System.out.println("End of method: salary=" + x.getSalary()); } public static void swap(Employee x, Employee y) { Employee temp = x; x = y; y = temp; System.out.println("End of method: x=" + x.getName()); System.out.println("End of method: y=" + y.getName()); } } class Employee // simplified Employee class { public Employee(String n, double s) { name = n; salary = s; } public String getName() { return name; } public double getSalary() { return salary; } public void raiseSalary(double byPercent) { double raise = salary * byPercent / 100; salary += raise; } private String name; private double salary; }
执行结果:
Testing tripleValue:
Before: percent=10.0
End of method: x=30.0
After: percent=10.0
Testing tripleSalary:
Before: salary=50000.0
End of method: salary=150000.0
After: salary=150000.0
Testing swap:
Before: a=Alice
Before: b=Bob
End of method: x=Bob
End of method: y=Alice
After: a=Alice
After: b=Bob
例4-5
package com.itquanta; import java.util.Random; /** * This program demonstrates object construction. * * @version 1.01 2004-02-19 * @author Cay Horstmann */ public class ConstructorTest { public static void main(String[] args) { // fill the staff array with three Employee objects Employee[] staff = new Employee[3]; staff[0] = new Employee("Harry", 40000); staff[1] = new Employee(60000); staff[2] = new Employee(); // print out information about all Employee objects for (Employee e : staff) System.out.println("name=" + e.getName() + ",id=" + e.getId() + ",salary=" + e.getSalary()); } } class Employee { // three overloaded constructors public Employee(String n, double s) { name = n; salary = s; } public Employee(double s) { // calls the Employee(String, double) constructor this("Employee #" + nextId, s); } // the default constructor public Employee() { // name initialized to ""--see below // salary not explicitly set--initialized to 0 // id initialized in initialization block } public String getName() { return name; } public double getSalary() { return salary; } public int getId() { return id; } private static int nextId; private int id; private String name = ""; // instance field initialization private double salary; // static initialization block static { Random generator = new Random(); // set nextId to a random number between 0 and 9999 nextId = generator.nextInt(10000); } // object initialization block { id = nextId; nextId++; } }
运行结果:
name=Harry,id=8638,salary=40000.0
name=Employee #8639,id=8639,salary=60000.0
name=,id=8640,salary=0.0
例4-6
package com.itquanta; import com.horstmann.corejava.Employee; // the Employee class is defined in that package import static java.lang.System.*; /** * This program demonstrates the use of packages. * @author cay * @version 1.11 2004-02-19 * @author Cay Horstmann */ public class PackageTest { public static void main(String[] args) { // because of the import statement, we don't have to use com.horstmann.corejava.Employee here Employee harry = new Employee("Harry Hacker", 50000, 1989, 10, 1); harry.raiseSalary(5); // because of the static import statement, we don't have to use System.out here out.println("name=" + harry.getName() + ",salary=" + harry.getSalary()); } }
例4-7
package com.horstmann.corejava; // the classes in this file are part of this package import java.util.*; // import statements come after the package statement /** * @version 1.10 1999-12-18 * @author Cay Horstmann */ public class Employee { public Employee(String n, double s, int year, int month, int day) { name = n; salary = s; GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day); // GregorianCalendar uses 0 for January hireDay = calendar.getTime(); } public String getName() { return name; } public double getSalary() { return salary; } public Date getHireDay() { return hireDay; } public void raiseSalary(double byPercent) { double raise = salary * byPercent / 100; salary += raise; } private String name; private double salary; private Date hireDay; }
执行结果:
name=Harry Hacker,salary=52500.0
第四章所有代码完。
相关文章推荐
- Core java第九版第四章对象与类
- 《java并发编程的艺术》读书笔记-第四章java并发的基础
- Java 线程第三版 第四章 Thread Notification 读书笔记
- Java Core 第9版 读书笔记(OOP) Part1
- 读书笔记_java设计模式深入研究 第四章 生成器模式 (建造者模式) Builder
- Thinking in Java 读书笔记 第四章 控制执行流程
- Core Java Volume I 读书笔记
- java core unit7 读书笔记
- Core Java Volume I 读书笔记---第十三章 集合
- corejava[读书笔记]第五章
- core java 读书笔记
- 123day(阅读Core Java第四章1,2节)
- Java Core II 读书笔记(一)多线程
- Java 线程第三版 第四章 Thread Notification 读书笔记
- 【读书笔记】Core Java
- 读书笔记,《Java 8实战》,第四章,引入流
- Thinking in Java第三版读书笔记-第四章:初始化与清理
- [core java学习笔记][第四章对象与类]
- Think in Java 第四版 第四章 控制执行程序 读书笔记
- [core java学习笔记][第四章对象与类]