编译时引用类型相等是指在编译时比较两个引用类型的变量是否相等。这种比较是基于引用地址的,而不是基于对象的内容。
在Java中,可以使用 "==" 操作符来比较两个引用类型的变量是否相等。以下是一个示例代码:
public class Main {
public static void main(String[] args) {
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
// 编译时引用类型相等
if (str1 == str2) {
System.out.println("str1 and str2 are equal");
}
// 编译时引用类型不相等
if (str1 == str3) {
System.out.println("str1 and str3 are equal");
}
}
}
在上面的示例中,str1 和 str2 都指向了同一个字符串常量 "Hello",因此它们的引用地址相等,所以输出结果为 "str1 and str2 are equal"。
而 str1 和 str3 虽然都表示相同的字符串内容 "Hello",但是 str3 是通过 new 关键字创建的新的字符串对象,在内存中的地址是不同的,因此它们的引用地址不等,所以输出结果为没有任何输出。