您的位置:首页 > 编程语言 > Java开发

java 值传递 和 引用传递

2017-07-13 12:58 190 查看
参考:(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;
}
}

}


大家可以运行,看下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: