首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java步骤参数需要注意的小细节

2012-12-24 
Java方法参数需要注意的小细节以下内容翻译自Core Java VIII volume I Chapter 4 Objects and Classes, 仅

Java方法参数需要注意的小细节

以下内容翻译自Core Java VIII volume I Chapter 4 Objects and Classes, 仅作为个人学习笔记参考和交流。

?

Java中方法的参数总是使用“按值传递(Call by Value)”,这意味着方法总是获取参数的一份拷贝。

Java中存在两种方法参数:"基本数据类型(Primitive types)"和"对象引用(Object references)"

?

>> 先来看基本数据类型的情况:

?

例1:

public static void tripleValue(double x){    x = 3 * x;}//方法调用:double percent = 10;tripleValue(percent);

?

分析:

?1. x 被初始化为percent的一份拷贝,值为10;

?2. 当调用tripleValue()方法的时候,x的值变为30,percent的值仍旧为10;

?3.?方法结束,参数x不再使用,所以方法结束后percent的值并未发生改变,即percent =? 10。

?

>>再来看参数为对象引用(Object references)的情况:

?

例2:

public static void tripleSalary(Employee x){   x.raiseSalary(200);}//方法调用:Employee harry =  new  Employee(...);tripleSalary(harry);//查看harry的SalarySystem.out.print(harry.getSalary());

分析:

1.?参数x被初始化为harry的拷贝,即对象引用的拷贝(注意不是Employee对象的拷贝,而是对象引用的拷贝)。?

2.raiseSalary()方法调用后,被x和harry同时引用的对象的Salary值被改变;

3.方法结束后,参数x不再使用,harry继续引用Employee实例对象,对象中的值被永久改变。

?

再来看一个例子,此例子说明了Java不是按引用传递,而总是按值传递:

public static void swap(Emplyee x, Employee y){    Employee temp = x;    x = y;    y = temp;}//方法调用:Employee a = new Employee("Alice",...);Employee b = new Employee("Bob",...);swap(a, b);

?

问:现在a引用的是Bob,b引用的是Alice吗?

如果你的答案是否,那么你就理解了Java中方法参数的传递方式了。

?

小结:

?Java中:

?1. 一个方法不能改变一个基本数据类型(的值)。

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

?3.一个方法不能使一个对象参数引用一个新的对象。

热点排行