Core Java (九) Java的方法参数

来源:互联网 发布:淘宝的手机充值平台 编辑:程序博客网 时间:2024/05/17 23:27

在各种程序设计语言中方法的参数有两种,分别是:值调用,引用调用。

Java程序设计语言总是采用值调用,即方法得到了所有参数值的一个拷贝

细分的话,方法参数一共两种类型:

  1. 如果参数是基本数据类型,那么传递的是一个基本数据类型的值;
  2. 如果参数是对象,那么传递的是一个对象引用的拷贝,注意不是C++中的对象引用。这个引用的拷贝和其他的拷贝一样,同时引用了一个对象。

一个方法不可能修改一个基本数据类型的参数,但是可以修改一个对象的状态。


一定要注意,Java中对对象采用的是引用的拷贝,并不是引用调用,反例如下:

测试程序:

package com.xujin;public class Test {public static void main(String[] args) {Employee[] staff = new Employee[2];staff[0] = new Employee("Bob", 1000);staff[1] = new Employee("Jim", 2000);//doesn't workswap(staff[0], staff[1]);System.out.println(staff[0].getName());//BobSystem.out.println(staff[1].getName());//Jimstaff[0].raiseSalary(0.5);//涨50%的工资System.out.println(staff[0].getSalary());//1500.0System.out.println(staff[0].getId());//1System.out.println(staff[1].getId());//2}public static void swap(Employee x, Employee y){Employee temp = x;x = y;y = temp;}}class Employee{public Employee(String name, double salary){this.name = name;this.salary = salary;id = nextId;nextId++;}public String getName(){return name;}public double getSalary(){return salary;}public int getId(){return id;}public void setName(String name){this.name = name;}public void setSalary(double salary){this.salary = salary;}public void raiseSalary(double percent){this.salary *= (1 + percent);}private String name;private double salary;private int id;private static int nextId = 1;}