java中的==和equals

xiaoxiao2021-02-28  3

1. == java中==运算符用来比较运算符两端的操作数是否相等,两端操作数值相等,返回true;操作数值不等,返回false。有切仅有这一条规则,根据这条规则来判断以下表达式的值。

1.1 两端为相同类型的基本类型

int a = 3; int b = 3; System.out.println(a == b); //返回true,运行时基本类型存储在栈中,固a和b的值都是3,所以返回true

1.2 两端为不同类型的基本类型

int a = 1; float b = 1.0f; System.out.println(a == b); //返回true,两个操作数同为基本类型但是类型不相同,比较时会先将取值范围小的类型转换为取值范围大的类型,再进行比较

1.3 两端为对象

String a = new String("a"); String b = new String("a"); System.out.println(a == b); //返回false,运行时对象存储在堆中,对象的引用存储在栈中,a和b的值是对象的引用,不同对象的引用不同,所以返回false

2. equals

equals是Object对象的方法,每个类都可以有自己的实现。下面贴出String的equals方法。

public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false; }
转载请注明原文地址: https://www.6miu.com/read-1750088.html

最新回复(0)