我们先写一个电话类,然后用手机1和手机2看对象的传递
public class Phone {
String brand;
double price;
String color;
void call(String call){
System.out.println("打电话给"+call+".");
}
}
然后我们 new 3个对象实验一下
public class PhoneOne {
public static void main(String[] args) {
Phone One = new Phone(); //手机对象1
One.brand = "iphone";
One.color = "绿色";
One.price = 5999.0;
Phone tow = One; //手机对象2
System.out.println(tow.color);//绿色
System.out.println(One.color);//绿色 传递的值很正常
tow.color = "黑色"; // 改一下tow的颜色
System.out.println(tow.color);//黑色
System.out.println(One.color);//黑色 我们发现one的颜色也变啦
System.out.println(tow);//day1.Phone@65ab7765 但是他们地址值一样
System.out.println(One);//day1.Phone@65ab7765 说明改变的是堆中的全局变量值
Phone three = new Phone();
three.color = "不灵不灵的颜色"; //不灵不灵的颜色
System.out.println(three.color); //day1.Phone@3a71f4dd 发现地址值也不一样
System.out.println(three); //***所以new一次,堆中存一组全局变量.one和tow只new了一次所以他们其实是一个对象.***//
PhoneOne.method(One);
}
重点:“所以new一次,堆中存一组全局变量.one和tow只new了一次所以他们其实是一个对象”
所以每个需要使用的对象都要new出来,不能通过赋值传递来初始化多个变量