java只有值传递(将地址当成值进行传递)
举例
public class Demo {
String aa;
int age;
public Demo(String aa, int age){
this.aa = aa;
this.age = age;
}
public static void change(Demo demo,Demo demo1){
Demo demo2 = new Demo("---",12);
demo2 = demo;
demo = demo1;
demo1 = demo2;
}
public void toSt(){
System.out.println(aa + age);
}
}
class A{
public static void main(String[] args) {
Demo demo = new Demo("+++",13);
Demo demo1 = new Demo("+++-",14);
Demo.change(demo, demo1);
demo.toSt();
demo1.toSt();
}
}
输出结果:
+++13
+++-14
交换的是change()方法中的demo和demo1的地址,与外部的无关
举例2
public class Demo {
String aa;
int age;
public Demo(String aa, int age){
this.aa = aa;
this.age = age;
}
public static void change(Demo demo,Demo demo1){
Demo demo2 = new Demo("---",12);
demo2.aa = demo.aa;
demo.aa = demo1.aa;
demo1.aa = demo2.aa;
}
public void toSt(){
System.out.println(aa + age);
}
}
class A{
public static void main(String[] args) {
Demo demo = new Demo("+++",13);
Demo demo1 = new Demo("+++-",14);
Demo.change(demo, demo1);
demo.toSt();
demo1.toSt();
}
}
运行结果:
+++-13
+++14
change()方法改变了两个地址的内容中的地址,这样造成外部的改变。