美文网首页
理解java的方法调用是值传递

理解java的方法调用是值传递

作者: 何德何能者 | 来源:发表于2018-02-24 18:32 被阅读5次

    ```

    public class Strings {

    public static void main(String[] args) {

    String s1 ="hello";

            String s2 ="world";

            System.out.println(s1+"---"+s2);

            change(s1,s2);

            System.out.println(s1+"---"+s2);

            StringBuffer sb1 =new StringBuffer("hello");

            StringBuffer sb2 =new StringBuffer("world");

            System.out.println(sb1 +"---" + sb2);

            change(sb1, sb2);

            System.out.println(sb1 +"---" + sb2);

        }

    /**

        * java方法里传参是

        * 方法里的参数与传递的参数指向同一个地址

        * 所以可以理解为,main里的和方法内的是不同命名指向的是同一个引用(即不同命名,同一个引用);

        * 为了避免混淆,方法的参数名避免跟main里的命名一样;使用不同命名就容易理解了

        * @param sb1

        * @param sb2

        */

        public static void change(StringBuffer sb1, StringBuffer sb2) {

    sb1 = sb2; //方法里的sb1引用已指向方法内sb2的地址,与main里的sb1已经无关

            sb2.append(sb1);//改变了方法内sb2的值,这里的sb2同main方法的sb2是同一个引用地址,所以main里的sb2的值也被改变;

        }

    /**

        * 理解java里方法调用都是值传递;

        * 1、如果是原生类型,就是传递数值;

        * 2、如果是引用类型,就是传递地址的值;

        * @param s1

        * @param s2

        */

        public static void change(String s1, String s2) {

    s1 = s2;

            s2 = s1 + s2; //此时s2是个新的对象,与mian方法里的s2已不是同一个引用地址

        }

    }

    ```

    相关文章

      网友评论

          本文标题:理解java的方法调用是值传递

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