java equals探索

来源:互联网 发布:500万双色球过滤软件 编辑:程序博客网 时间:2024/06/15 19:06

今天在解析一个网页时发现一个问题,首先大家看一段代码

代码1:

class Test{ public static void main(String[] args){  String a="123";  int b=123;  System.out.println(a.equals(b)); }}

大家看后感觉最后会打印出什么,是false还是true?

首先大家应该都知道,如果是下面一段代码

代码2:

class Test{ public static void main(String[] args){  String a="123";  String b="123";  System.out.println(a.equals(b));  System.out.println(a==b); }}
代码2打印的是一个true和一个false,java中String如果使用==是比较两个字符串是一个对象,而使用equals是比较字符串所对应的字符串值是否相同。


下面回到代码1,一个String与一个int(Integer)使用equals比较,下面看一下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;    }
大家看到了吧,if (anObject instanceof String),才会进行下面的进一步比较,否则直接返回false,所以代码1中打印的结果是fasle,大家可以自己试一下。

欢迎大家评论啊  





原创粉丝点击