24小时热门版块排行榜    

查看: 1944  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

hywC

新虫 (小有名气)

[求助] 求大神解释java中String中的eqials方法的源代码 已有2人参与

Sample Text
求解释java中String中的eqials方法的源代码
CODE:
public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;
        }
        if (anObject instanceof String) {
            String anotherString = (String)anObject;
            int n = count;
            if (n == anotherString.count) {
                char v1[] = value;                                         //这里char[]数组怎么可以直接赋值给他
                char v2[] = anotherString.value;                   //
                int i = offset;
                int j = anotherString.offset;
                while (n-- != 0) {
                    if (v1[i++] != v2[j++])
                        return false;
                }
                return true;
            }
        }
        return false;
    }

回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

w无衣师尹w

新虫 (初入文坛)

【答案】应助回帖

详细说明看我加的代码注释
1)this代表调用equals方法的实例。
2)equals方法,代表两个意思,一个是完全相同的实例;另一个是内容相同的实例;
3)逐个字符比较就不赘述了。
public boolean equals(Object anObject) {//传入的对象,类似于泛型概念
        if (this == anObject) {//这段代码块表示当前实例和anObject是否引用同一地址空间,即完全相同
            return true;
        }
        if (anObject instanceof String) {//这段代码块,对anObject使用反射成String类型,对this和anObject进行每个单字符对比,若完全相等,则返回true。结合以前代码块,这处理的肯定不是同一地址空间的实例。
            String anotherString = (String)anObject;
            int n = count;
            if (n == anotherString.count) {
                char v1[] = value;                                         //这里char[]数组怎么可以直接赋值给他
                char v2[] = anotherString.value;                   //
                int i = offset;
                int j = anotherString.offset;
                while (n-- != 0) {
                    if (v1[i++] != v2[j++])
                        return false;
                }
                return true;
            }
        }
        return false;
    }
7楼2014-01-03 10:13:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 7 个回答

virtualzx

木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
数组初始化的语法就是这样的。java会根据右边的数组长度自动确定v1和v2的长度
type a[]=初始值数组

比如
int data[] = new int[] {1,2,3,4,5,6};
就定义一个长度为6的整数数组
2楼2013-12-03 01:01:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

caozhengwei

银虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
this == anObject 这个地方是比较两个引用指向的内存地址是不是一致 如果一致的话直接return true
接下来 anObject instanceof String是判断anObject是不是一个String类型的对象  如果不是的话直接return false 如果是的话会把两个String类型的对象的值拿出来比较  你可以看到String.java这个类里边定义了一个private final char value[];吧   明白????
3楼2013-12-03 10:10:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hywC

新虫 (小有名气)

引用回帖:
2楼: Originally posted by virtualzx at 2013-12-03 01:01:12
数组初始化的语法就是这样的。java会根据右边的数组长度自动确定v1和v2的长度
type a[]=初始值数组

比如
int data[] = new int[] {1,2,3,4,5,6};
就定义一个长度为6的整数数组

CODE:
int i = offset;
                int j = anotherString.offset;

这个是什么意思
4楼2013-12-06 21:05:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见