- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
方法的参数传递
参数传递 参数传递分两种类型: ①参数按值传递 ②参数按引用传递 参数按值传递-参数类型? class TestMax { public static void main(String[ ] args){ int i = 5; int j = 2; int num3 = max(i, j); System.out.println(The maximum is + num3); } static int max(int num1, int num2){ if (num1 num2) return num1; else return num2; } } 参数按值传递 在调用带参数的方法时,参数的值复制到方法中称为按值传递(pass by value)。 无论方法中的形参怎么变化,实参并不会改变!!这是参数按值传递的最大特色! 我们看一个例子TestPassByValue.java,它包含一个static void swap(int n1, int n2)方法,该方法的功能是交换数字n1和数字n2的数值。 参数按值传递 //交换n1、n2的数值;如n1等于1,n2等于2, //执行该方法,n1等于2,n2等于1 static void swap(int n1, int n2) { int temp = n1; n1 = n2; n2 = temp; } 参数按值传递 实参的内容没有交换 参数的引用传递 当一个方法的参数是对象或数组时,我们称这种传递方式为引用传递。 那么,什么是引用呢? 简单类型与引用(对象)类型 对简单类型变量来说,对应内存所存储的值是简单类型的数值。 对引用类型的变量来说,它的值是一个引用,是对象的存储地址。Java中的对象和数组都属于引用类型。 简单类型变量和对象类型变量的区别 变量赋值 简单类型变量,一个变量的真实值赋给另一个变量。 对于对象类型变量,一个变量的引用赋给另一个变量。 关于引用和对象的一种通俗的解释: 引用和对象的关系,可以想象成电视遥控板(引用)和电视机(对象)的关系。只要握住这个遥控板,就相当于掌握了与电视机连接的通道。一旦需要“换频道”或者“关小声音”,我们实际操纵的是遥控板(引用),再由遥控板自己操纵电视机(对象)。如果要在房间里四处走走,并想保持对电视机的控制,那么手上拿着的是遥控板,而非电视机。此外,即使没有电视机,遥控板亦可独立存在。也就是说,只是由于拥有一个引用,并不表示必须有一个对象同它连接。可创建一个Circle引用: Circle c; 但这里创建的只是引用,并不是对象。这里c实际并未与任何东西连接(即“没有电视机”)。 c=new Circle(); 这样c引用和一个圆对象相连接。(遥控板和电视机连接) 给方法传递对象 以引用类型作为参数 假设有一个盒子类Box,定义如下: public class Box { String color; Box(String color){ this.color=color; } public String toString(){ return color; } } 以引用类型作为参数 public class TestBox { static void changeColor(Box b1){ b1.color=green; } public static void main(String[] args) { Box redBox=new Box(red); System.out.println(红盒子是+redBox.color+色的。); changeColor(redBox); System.out.println(红盒子是+redBox.color+色的。); } } 调用了changeColor方法后,盒子的属性color被改变。 * * 方法的参数传递 i和j是实际参数,简称实参 num1和num2是形式参数,简称形参 ①变量temp等于n1的数值 ②n1等于n2的数值 ③n2等于temp的数值,因为temp等于n1的数值,所以n2也就等于n1的数值 public class TestPassByValue{ public static void main(String[ ] args) { int num1
文档评论(0)