Java参数的值传递(Swap())
来源:互联网 发布:utorrent mac下载很慢 编辑:程序博客网 时间:2024/05/24 00:14
参数的值传递:
方法的优点就是其处理参数的能力。值传递就是当调用带参数的方法时,实参传递给形参的过程。在值传递的过程中,如果实参是变量而不是直接量,则将该变量的值传递给形参,无论形参在方法中是否改变,该变量都不会受到影响。
我们以交换函数Swap()为例:
//错误例子
public class TextSwap { public static void main(String[] args) { // TODO Auto-generated method stub int num1=1; int num2=2; swap(num1,num2); System.out.println("In the main method:"+num1+"and"+num2); } //交换a和b的值 public static void swap(int a,int b){ int temp=a; a=b; b=temp; System.out.println("In the swap method:"+a+"and"+b); }}
通过上述方法,并不能得到正确的结果,那是因为main()方法和swap()方法所需的空间是俩个独立的空间,main方法在调用swap方法时,在swap方法的空间里实参num1与num2的值传递给a,b,进行了交换,但并没有改变main函数空间中所定义的num1与num2的值,所以a与b的改变并不能影响num1,num2的值。
在C/C++中有地址引用符号,可以用其来传递变量地址。然而Java语言中并没有地址引用符号,所以通过地址的方式在Java中是不可能实现的,但可以通过其他方式来实现。
1、数组交换值:
public class Swap<T> { //定义了一个泛型的交换类 public Swap() { } **public <T> void swap(T []str,int m,int n){//数组交换值 T temp=str[m]; str[m]=str[n]; str[n]=temp; }**}
只要创建其对象,调用swap()函数就可实现对两个任意类型数值的交换。
2、定义类进行值交换:
public class Swap { private int num; public Swap() {//构造函数 } public Swap(int num){//构造函数 this.num =num; } public int getNum() { return num; } public void setNum(int num) { this.num = num; }}public class TextSwap { public static void main(String[] args) { // TODO Auto-generated method stub Swap swap1=new Swap(1); //创建对象 Swap swap2=new Swap(2); swap(swap1, swap2); System.out.println(swap1.getNum()+" "+swap2.getNum()); } public static void swap(Swap a,Swap b){ //交换函数 int a1=a.getNum(); a.setNum(b.getNum()); b.setNum(a1); }}
该方法需要类才能得以实现,并不灵活,建议采用数组方式进行数值交换
1 0
- Java参数的值传递(Swap())
- Java方法参数传递(Java swap函数)
- Java方法参数传递(Java swap函数)
- java方法中参数的传递机制(值传递)
- 关于自定义各种swap()函数(函数参数传递)
- java参数传递(值传递还是引用传递)
- java参数传递(值传递还是引用传递)
- java参数传递(值传递还是引用传递)
- java参数传递(值传递还是引用传递)
- java参数传递(值传递还是引用传递)
- JAVA中函数调用参数传递的理解(值传递和引用传递的理解)
- JAVA的值传递与参数传递
- java参数的值传递
- java中的参数传递(值传递等)
- Java方法参数的传递机制,值传递?引用传递?
- Java的参数传递有值传递和引用传递
- java中的传递参数其实都是值传递(引用就是拷贝对象的一个地址)
- 面试之路(18)-java的函数参数传递类型之值传递还是引用传递
- cocos2dx 常见的49中动作详解
- NDK开发 从入门到放弃(五:JNI抛异常)
- python中的sum函数
- Shiro身份验证
- win7使用jmeter做接口压力测试
- Java参数的值传递(Swap())
- jdk api中文版地址
- WindowManager.LayoutParams详解
- ViewPager + Fragment关闭滑动切换效果
- 调试动态加载的js
- iOS 使用 UIDataDetectorType 简单验证手机号、邮箱、网址
- cuda export
- hibernate5+oracle+jdk1.8(第一课)
- composer