为了账号安全,请及时绑定邮箱和手机立即绑定

String类中的compareTo函数为什么能够直接使用xx.value值的方式?

String类中的compareTo函数为什么能够直接使用xx.value值的方式?

闲逛的蚂蚁 2016-05-02 09:56:27
String类的compareTo方法如下:public int compareTo(String anotherString) {         int len1 = value.length;         int len2 = anotherString.value.length;         int lim = Math.min(len1, len2);         char v1[] = value;         char v2[] = anotherString.value;//通过value字段直接拿到了anotherString的字符数组         int k = 0;         while (k < lim) {             char c1 = v1[k];             char c2 = v2[k];             if (c1 != c2) {                 return c1 - c2;             }             k++;         }         return len1 - len2;     }为什么这里可以直接使用anotherString.value的方式获取的字符串里面的字符数组?这个value字段不是private的么,而且我们自己仿照这样用xx.value来获取某个字符串的字符数组也是不行的,只能使用toCharArray函数来获取,为什么String源码当中就行能,百思不得其解啊。。。还请各位大神赐教
查看完整描述

1 回答

?
旧少年

TA贡献2条经验 获得超1个赞

个人一点拙见: 

在Java中关于Java.lang.String类的源代码中有这样一个字段的说明   

/** The value is used for character storage. */
    private final char value[];

表明String类的内部实现用的就是字符数组存储字符串的,而且它是一个私有的类成员变量,因此因此xx.value是无法在外部调用到的,而comparaTo是String类的成员方法,自然可以调用到。


查看完整回答
1 反对 回复 2016-05-02
  • 闲逛的蚂蚁
    闲逛的蚂蚁
    nice,我模仿了一下String类测试,的确是像你说的这样。谢谢分享
  • 慕函数5491460
    慕函数5491460
    别人问的是方法参数中的其他String调用value,不是说本类中调用,本类中当然能访问自己的成员变量
  • 1 回答
  • 2 关注
  • 2489 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信