本文主要是介绍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;@Overridepublic String toString() {String s = "ModelTest{" +"mint=" + mint +", mString='" + mString + '\'' +'}';System.out.println(s);return s;}}}
大家可以运行,看下。
这篇关于java 值传递 和 引用传递的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!