java方法(参数传递机制、实现值交换、形参不确定)
来源:互联网 发布:手机概率分析软件 编辑:程序博客网 时间:2024/06/08 03:13
一、参数传递机制
Java方法的传递只有一种:值传递(方法内操作的是传入参数的复制)
因此,基本类型的数值交换不能通过方法来实现
package net.csdn.blog;public class ForValidating {public static void main(String[] args) {int first = 5;int second = 9;System.out.println(first + " , " + second);//5 , 9Swap.swap(first, second);System.out.println(first + " , " + second);//5 , 9}}class Swap{static void swap(int first, int second){int temp = first;first = second;second = temp;}}
二、通过其他方式实现值交换的方法
用类包装
package net.csdn.blog;public class ForValidating {public static void main(String[] args) {Hold hold = new Hold();hold.first = 5;hold.second = 9;System.out.println(hold.first + " , " + hold.second);//5 , 9Swap.swap(hold);System.out.println(hold.first + " , " + hold.second);//9 , 5}}class Hold{public int first;public int second;}class Swap{static void swap(Hold hold){int temp = hold.first;hold.first = hold.second;hold.second = temp;}}
用内置的Holder类
package net.csdn.blog;import org.omg.CORBA.IntHolder;/*注意不能用各种包装类,它们都是final类,不可变,即使是引用类型,也不能实现交换*/public class ForValidating {public static void main(String[] args) {IntHolder first = new IntHolder(5);IntHolder second = new IntHolder(9);System.out.println(first.value + " , " + second.value);Swap.swap(first, second);System.out.println(first.value + " , " + second.value);}}class Swap{static void swap(IntHolder first, IntHolder second){int temp = first.value;first.value = second.value;second.value = temp;}}
Java里除了基本数据类型,就是引用类型,之所以用引用就能实现交换,是因为引用对象的名字相当于C++里面的指针
IntHolder first = new IntHolder(5);
first相当于一个指针,指向存放着5的内存,就算通过值传递,也相当于方法里只是复制了引用,复制的引用也是指向同一内存,可以实现修改
三、形参不确定的方法(两种)
package net.csdn.blog;public class ForValidating {public static void main(String[] args) {String first_result = Uncertain.first_kind(1, "a", "b", "c");String second_result = Uncertain.second_kind(2, new String[]{"d", "e", "f"});System.out.println(first_result);//1( a b c )System.out.println(second_result);//2( d e f )String first_another_result = Uncertain.first_kind(3, new String[]{"g", "h", "i"});System.out.println(first_another_result);//3( g h i )}}class Uncertain{static String first_kind(int id, String ... property){String result = id + "( ";for(String s : property)result += s + " ";result += ")";return result;}static String second_kind(int id, String[] property){String result = id + "( ";for(String s : property)result += s + " ";result += ")";return result;}}
first_kind既可以传入多个参数,也可以直接传入一个数组,长度可变的形参只能处于参数列表的最后,且只能有一个
second_kind只能传入一个数组,但是可以定义多个,也可以放在参数列表的任何位置
0 0
- java方法(参数传递机制、实现值交换、形参不确定)
- java方法中参数的传递机制(值传递)
- Java方法参数的传递机制,值传递?引用传递?
- java中的方法参数传递机制---值传递
- 两段交换代码轻松理解Java参数传递机制
- java函数方法参数传递方式机制-值传递还是引用传递(传值或传引用)
- java基础——方法参数的值传递机制
- java不确定参数个数方法例子
- java中方法的参数传递机制
- java中方法参数的传递机制
- Java方法的参数传递机制
- Java中方法的参数传递机制
- java中方法的参数传递机制
- java中方法的参数传递机制
- java中方法的参数传递机制
- java中方法的参数传递机制
- java中的方法参数的传递机制
- java方法的参数传递机制
- Dom4j解析和创建XML文档
- 对象的浅复制与深复制
- 微信公众平台开发 Node.js SDK
- thinking in asp 之九 软件王国的硬件战争
- 读书笔记:“集体智慧编程”之第三章:“发现群组”的 列聚类
- java方法(参数传递机制、实现值交换、形参不确定)
- 祖垲哥活到101岁 附《我的回忆》
- 备忘录模式——Head First Design Patterns
- 可复用的单链表
- android MSM8974 上DeviceTree简介
- Dom4j解析和创建XML文档
- 文法和语言
- 原型模式——Head First Design Patterns
- 双网卡,上网走外网网卡,内网走内网网卡设置。