Java中的知识点拾贝

来源:互联网 发布:ubuntu 16.04 安装出错 编辑:程序博客网 时间:2024/05/02 01:24

/**TIPS4: * 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{   private String name;   private double salary;   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;   }}
Testing tripleValue:Before: percent=10.0End of method: x=30.0After: percent=10.0
Testing tripleSalary:Before: salary=50000.0End of method: salary=150000.0After: salary=150000.0
Testing swap:Before: a=AliceBefore: b=BobEnd of method: x=BobEnd of method: y=AliceAfter: a=AliceAfter: b=Bob

tips1  所有的Java对象都是在堆中构造的,构造器总是伴随着new操作符一起使用。

tips2  不需要使用对象调用静态方法,例如,不需要构造Math类对象就可以调用Math.pow。

tips3  Java程序设计语言总是采用按值调用,而不采用按引用调用。
tips4  Java中方法参数的使用情况:

          (1)一个方法不能修改一个基本是句类型的参数(即数值型或者布尔型)。

           (2)一个方法可以改变一个对象参数的状态。

           (3)一个方法不能让对象参数引用一个新的对象。