Unity 中 ==和Equals的区别

一、==运算符:
  既可以比较基本数据类型也可以比较引用数据类型,对于基本数据类型比较的就是本身的数据值是否一致,对于引用类型就是比较堆内存中的地址值是否一致。

二、equals()方法:
  equals方法不能比较基本数据类型的变量,如果该方法没有被重写过的话本质上就是 ==,比较的是引用类型的变量所指向的对象的地址;但可以看到String类、Integer类等类的equals()方法是被重写过的,比较的是所指向的对象的内容。

用例

String num1 = "hello";
String num2 = "hello";
String num3 = new String("hello");
System.out.println(num1 == num2);         // true
System.out.println(num1 == num3);         // false
System.out.println(num1.equals(num2));     // true
System.out.println(num1.equals(num3));     // true

解析:因为num1和num2指向的是同一个地址,所以 == 的结果为true,num3是在堆里新开辟了一个空间,地址不同,所以结果为false;因为String类的equals方法是被重写过的,比较的是两个值,所以结果为true。

猜你喜欢

转载自blog.csdn.net/m0_56283466/article/details/136157183