public class Cup {
String name;//杯子的名字
String tea;//装的茶
Cup(String name,String tea)
{
this.name = name;
this.tea = tea;
}
//c和m都是指向new Cup("张无忌","铁观音");的引用
public static void yinYong(Cup m)//以个新引用 指向实参c
{
m = new Cup("张三丰","碧螺春"); //主函数 输出没受影响
System.out.println("引用转向新对象: "+m.name+"喜欢喝"+m.tea);
}
//c和c都是指向new Cup("张无忌","铁观音");的两个引用
public static void yinYong2(Cup c)
{
c.tea = "红茶"; //主函数 输出变了
}
public static void main(String[] args) {
Cup c = new Cup("张无忌","铁观音");
System.out.println(c.name+"喜欢喝"+c.tea);
Cup.yinYong(c);
System.out.println(c.name+"喜欢喝"+c.tea);
Cup.yinYong2(c);
System.out.println(c.name+"喜欢喝"+c.tea);
}
}
输出为
张无忌喜欢喝铁观音
引用转向新对象:张三丰喜欢喝碧螺春
张无忌喜欢喝铁观音
张无忌喜欢喝红茶
说明
//引用传递 可以改变实参对象的内容 但不能改变实参对象 引用传递一律都是值传递
//引用传递 实质是建立一个新引用 只向同一个对象 或者说指向实参的新引用