62,614
社区成员
发帖
与我相关
我的任务
分享
public class Test {
public static void main(String[] args) {
String a = "abc";
String[] b = {"a","b","c"};
change(a,b);
System.out.println(a);
System.out.println(b[0] + b[1] + b[2]);
}
private static void change(String a,String[] b){
String temp = "123";
a = temp;
b[0] = "A";
}
}
public class Test {
public static void main(String[] args) {
System.out.println("In main() ");
String a = "abc";
Addr ad = new Addr(a);
ad.retAddr("a");
String[] b = {"a","b","c"};
ad = new Addr(b);
ad.retAddr("b[]");
ad = new Addr(b[0]);
ad.retAddr("b[0]");
ad = new Addr(b[1]);
ad.retAddr("b[1]");
ad = new Addr(b[2]);
ad.retAddr("b[2]");
change(a,b);
System.out.println(a);
System.out.println(b[0] + b[1] + b[2]);
}
private static void change(String a,String[] b){
System.out.println("\nenter change ");
Addr aod = new Addr(a);
aod.retAddr("a");
aod = new Addr(b);
aod.retAddr("b[]");
aod = new Addr(b[0]);
aod.retAddr("b[0]");
aod = new Addr(b[1]);
aod.retAddr("b[1]");
aod = new Addr(b[2]);
aod.retAddr("b[2]");
System.out.println("a = " + a);
System.out.println("b[] = " + b[0] + b[1] + b[2]);
a = "123";
System.out.println("\nreset a");
System.out.println("a = " + a);
aod = new Addr(a);
aod.retAddr("a");
b[0] = "A";
aod = new Addr(b);
aod.retAddr("b[]");
aod = new Addr(b[0]);
aod.retAddr("b[0]");
aod = new Addr(b[1]);
aod.retAddr("b[1]");
aod = new Addr(b[2]);
aod.retAddr("b[2]");
System.out.println("\nreset b[]");
System.out.println("b[] = " + b[0] + b[1] + b[2]);
System.out.println("exit change!\n");
}
private static class Addr {
public Addr(Object o) {
aObj = o;
}
public void retAddr(String s) {
System.out.print("&" + s + " = ");
System.out.println("@" + Integer.toHexString(aObj.hashCode()));
}
private Object aObj;
}
}
public class Test {
public static void main(String[] args) {
String a = "abc";
String[] b = {"a","b","c"};
change(a,b);
System.out.println(a);
System.out.println(b[0] + b[1] + b[2]);
}
private static void change(String a,String[] b){
a = "123";
String[] temp = {"1","2","3"};
b = temp;
b[0] = "A";
}
}
package com.test;
public class Test {
public static void main(String[] args) {
//这里引用a指向对象"abc"
String a = "abc";
String[] b = {"a","b","c"};
//调用方法
change(a,b);
System.out.println(a);
System.out.println(b[0]+b[1]+b[2]);
}
public static void change(String a,String[] b){
//这里的引用a首先指向对象"abc",接着又会指向对象"123",以前那个"abc"仍然被main方法中的a所指向,所以那个a会打印出"abc"
a="123";
//b[0]指向"a",b[1]指向"b",b[2]指向"c",接着b[0]又会指向"A",以前指向的那个"a"在以后的某个时刻会被GC回收掉,所以b[0]+b[1]+b[2]会打印出Abc
b[0]="A";
}
}