Java的参数传递总结

本文深入探讨Java中参数传递机制,针对基础类型与对象类型的传递方式进行对比解析,通过实例代码演示传递过程及结果变化,揭示二者在内存中行为的区别。
Java的参数传递总结: 
 
JAVA的参数传递总是传"值",但是传值方式也分为两种方式,它们是靠传递参数的类型区分的。这两种类型分别为JAVA的基础类型和Object(对象)类型;基础类型包括boolean,byte,short,char,int,long,float,double,而Object就是对象,如数组.在参数为基础类型时,见代码:
   public class A{
     public static void main(String arg[]){
       int a=3;
       method1(a);
       System.out.println(a);
     }
     public static void method1(int a){
      a=4;
     }
   }
此时结果的输出将是1,而且只要你的值在Main函数中没变,a的值不管怎么传都不回变,这是因为a是传值,而这个"值"是a的一个拷贝,a的值在传递后的改变只是改变了a的拷贝的内容,并没有改变真正的a的值;对于参数为对象
    public class A{                                   public class A{
     public static void main(String arg[]){    public static void main(String arg[]){
       int[] a=new int[1];                                int[] a=new int[1];
       a[0]=3;                                               a[0]=3;
       method1(a);                                        method1(a);
       System.out.println(a[0]);                       System.out.println(a[0]);
     }                                          }
     public static void method1(int[] a){         public static void method1(int[] a){
      a[0]--;                                                  a=new int[0];
     }                                                           a[0]=4;
   }                                                            }
                                                              }
左边的结果将是2,右边的结果将是3(未变),原因是:在传递的参数为对象时,这个传递的"值"中放的内容实际上是对向所在的地址,左边的情况是指针定位到对象的地址后,在上面把内容给改了,所以数组的值后会改变,而右边的情况为给对象新分配了一个指针到新的地址上面去,所以所有的操作都在新的地址上面,并不会影响原来的值。注:对于String,Interger,Boolean,Double等的系统对象,它们虽然是Object,但是任何方式的传递参数的值得改变并不会影响原来的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值