java 值传递 和 引用传递

参考:(http://www.cnblogs.com/woshimrf/p/5263018.html)
参考:(http://www.cnblogs.com/binyue/p/3862276.html)

1。Java 方法参数传递,除了基本数据类型,其他都是传递的副本。(String 也是传递了引用的副本)所以,在方法里面给一个对象new 了一个新的,不会影响方法外面的,原来的对象。
2。自己动手,风衣足食。这是各说各的理的事情,就要自己动手了。

package com.example;

public class MyClass {


        public static void main(String args[]){
            //基本数据类型 桉值传递
            int mA = 50;
            testAdda(mA);
            System.out.println(mA);
            //非基本数据类型 按引用传递
            ModelTest modelTest =new ModelTest();
            modelTest.mint = 2_0;
            modelTest.mString = "test1";
            modelTest.toString();
            ModfyModeTest(modelTest);
            modelTest.toString();

            //常量字符串
            String test = "woshi Test";
            ChangeString(test);
            System.out.println(test);

            //new String类型 不是引用传递
            String newString = new String("woshi new String");
            ChangeString(newString);
            System.out.println(newString);


            }



        public static void testAdda(int a){
            a++;
            System.out.println("testAdd"+a);
        }

        public static void ModfyModeTest(ModelTest modelTest){
            modelTest.mint = 50;
            modelTest.mString = "changed";
            modelTest.toString();
            //这样是不行的 修改了副本的指向的值
            modelTest = new ModelTest();
            modelTest.mString = "ts";
            modelTest.mint = 10 ;

        }

        public static void ChangeString(String string){
            string += "test";
        }

    static class ModelTest{
        int mint;
        String mString;

            @Override
            public String toString() {
                String s = "ModelTest{" +
                        "mint=" + mint +
                        ", mString='" + mString + '\'' +
                        '}';
                System.out.println(s);
                return s;
            }
        }


}

大家可以运行,看下。

posted @ 2017-07-13 12:58  有点理想的码农  阅读(118)  评论(0编辑  收藏  举报