java中的==和equals

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;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值