美文网首页
JAVA参数传递类型

JAVA参数传递类型

作者: Carter强 | 来源:发表于2019-09-25 12:00 被阅读0次

结论:JAVA中参数传递的方式只有一种方式,即值传递;


Java中有俩种数据类型:一:基本数据类型:即byte,short,int,long,float,double,char,boolean

                                              二:复合数据类型:即String,StringBuffer,ArrayList等

Demo1:对于基本数据类型,做如下Demo:

public static void main(String []args){

        int a =5 ;

       System.out.println("初始的a的值为:"+a);

       changeInt(a);

       System.out.println("调用changeInt方法后a的值为:"+a);

}

public static void changeInt(int a){

        a =8;

}

result : 初始的a的值为:5

              调用changeInt方法后a的值为:5

我们看到,局部变量a被当作参数传入changeInt方法后,并没有改变其原来的值,这是因为传入的参数其实是a的值的一份拷贝,所以说无论changeInt方法如何使用a的值,原来的a的值都不会受到任何影响。

Demo2:对于复合数据类型(挑选StringBuffer作为实例测试),做如下Demo

public static void main(String []args){

       StringBuffer sbf =new StringBuffer("Hello");

       System.out.println("初始化StringBuffer实例sbf的值为:"+sbf);

       changeStringBuffer(sbf);

System.out.println("调用changeStringBuffer方法后sbf的值为:"+sbf);

}

public static void changeStringBuffer(StringBuffer sb){

       sb.append(" world");

}

运行结果:初始化StringBuffer实例sbf的值为:Hello

                     调用changeStringBuffer方法后sbf的值为:Hello world

我们发现,局部变量sbf的值在经changeStringBuffer方法调用后其值发生了改变 , 明明是值传递,为什么会发生这样的事情呢?查阅资料后,sbf 实际是一个引用,而该引用存的是实际的sbf对象在内存中的地址,在向changeStringBuffer传递参数时实际传的是引用的副本。所以说在changeStringBuffer方法内,局部变量sb引用指向的地址和sbf引用指向的地址是同一个地址即同一个对象,当changeStringBuffer方法内对sb指向的对象做了修改时,也就是改变了sbf指向的对象,所以说当我们输出sbf对象的值时,我们发现它被修改了。

Demo3: 复合数据类型中特殊情况之String(String类型的参数作为参数传递不会改变其值)

String 是final类型,并且是不可变的。

String s = "hello"    <=> String  s = new String("hello")   

所以说,每次给String类型的变量赋值其实都在重新创建一个对象,并不会影响原先的String对象。

其最终的参数传递的结果和基本数据类型的参数传递结果是一样的。

相关文章

  • 值/引用/参数传递

    java参数都是值传递java变量有基本类型和引用类型 引用类型做参数 传递一个“不同的”(一份copy)但“指向...

  • Java 参数传递问题

    Java参数传递 给出了基本类型和引用类型参数传递时行为的示例,并给出了String类型作为参数传递时表现出的和一...

  • java 参数传递

    java中方法参数传递方式是按值传递。 如果参数是基本类型,传递的是基本类型的字面量值的拷贝。 如果参数是引用类型...

  • 对象类型的参数传递

    对象类型的参数传递: JAVA中只有值传递.基本类型好理解,直接传递数值 基本数据类型作为参数,直接操作引用类型作...

  • Java中的传递是值传递

    Java中的参数类型 形式参数,即形参 实际参数,即实参 Java中的两种参数传递情况 值传递:指在进行函数方法调...

  • Java 值传递 or 引用传递?

    先说结论 java中方法参数传递方式是按值传递。如果参数是基本类型,传递的是基本类型的字面量值的拷贝。如果参数是引...

  • JAVA参数传递类型

    结论:JAVA中参数传递的方式只有一种方式,即值传递; Java中有俩种数据类型:一:基本数据类型:即byte,s...

  • JAVA中方法参数传递方式是值传递还是引用传递 ?

    先上结论(带着结论往下看): java中方法参数传递方式是 按值传递。 如果参数是基本类型,传递的是基本类型的字面...

  • Java中是否有引用传递

    前言 总所周知,C++中有值传递、指针传递、引用传递三种参数传递类型。那么我们就来探究Java的传递类型。 我们先...

  • java 方法传参

    java方法参数的传递过程,是一个值的复制过程而非传递过程: 1)参数类型为基本类型时,复制的是基本类型的值变量 ...

网友评论

      本文标题:JAVA参数传递类型

      本文链接:https://www.haomeiwen.com/subject/obubuctx.html