对于赋值操作”=”, 基本数据类型存储了实际的值,
而”将一个对象赋值给另一个对象”, 是将引用从一个地方复制到另一个地方.
对象的这种现象就是“别名现象”.
示例:
//: Main.java
class FloatType {
float f;
}
/**
* 别名机制示例
*/
public class Main {
public static void main(String[] args) {
FloatType f1 = new FloatType();
FloatType f2 = new FloatType();
f1.f = 4; f2.f = 8;
System.out.println("f1.f = " + f1.f + ", f2.f = " + f2.f);
f1.f = 16; f2.f = 32;
System.out.println("f1.f = " + f1.f + ", f2.f = " + f2.f);
f1 = f2; // 赋值操作
f2.f = 64; // 别名现象, f1.f的值也被修改
System.out.println("f1.f = " + f1.f + ", f2.f = " + f2.f);
}
}
/**
* Output:
* f1.f = 4.0, f2.f = 8.0
* f1.f = 16.0, f2.f = 32.0
* f1.f = 64.0, f2.f = 64.0
*///:~
方法调用中, 将一个对象作为参数传递给方法, 其实传递引用, 也会产生别名现象.
//: Main.java
class FloatType {
float f;
}
/**
* 方法调用别名机制
*/
public class Main {
static void change(FloatType of) {
of.f = 32;
}
public static void main(String[] args) {
FloatType of = new FloatType();
of.f = 4;
System.out.println("of.f = " + of.f);
change(of); // 方法调用的引用传递
System.out.println("of.f = " + of.f);
}
}
/**
* Output:
* of.f = 4.0
* of.f = 32.0
*///:~
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-09-30 09:23:01