javz笔记之:有趣的静态方法的使用
javz笔记之:有趣的静态方法的使用
发布时间:2016-12-28 来源:查字典编辑
摘要:复制代码代码如下:importjava.util.*;publicclasswelcome{publicstaticvoidmain(Str...

复制代码 代码如下:

import java.util.*;

public class welcome {

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);

percent = tripleValue(percent);

System.out.println("After: percent =" + percent); //这里输出为30了!正常的结果

/*

* 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 double tripleValue(double x) // doesn't work

{

return 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;

}

如果是以下代码:System.out.println("After: percent =" + percent); //这里输出为10了!因为静态方法达不成你要的效果

这是因为静态方法不能对对象产生效果,和静态域一样,它属于类,不属于任何对象。

复制代码 代码如下:

/**

* 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;

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Java学习
热门Java学习
编程开发子分类