关于java String 类源代码中equals()方法实现的问题

zhulin10541 2009-09-29 04:10:45

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 v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}



这里面的anotherString是一个String类型,它里面的变量count和value都是private的,但是为什么这里可以直接引用到。
我偿试自己写了一个String ,但是确引用不到这两个变量。这是怎么回事?难道是“源代码有特权”,还是我哪里理解不到位
...全文
204 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhulin10541 2009-09-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gukuitian 的回复:]
这里面的anotherString是一个String类型,它里面的变量count和value都是private的,但是为什么这里可以直接引用到。
我偿试自己写了一个String ,但是确引用不到这两个变量。这是怎么回事?难道是“源代码有特权”,还是我哪里理解不到位

嘿嘿,源代码当然有特权。private 型的在String类外是不能直接用的,但这个方法是在String类内部,
一个类是可以在内部的方法调自己的private属性的,
你的估计是在外部new 的吧,当然不行
[/Quote]
恩,是我大意了,哈哈,谢谢啊
wang12 2009-09-29
  • 打赏
  • 举报
回复
一个类中定义了一个private类型的成员变量,接着产生了这个类的两个实例变量,那么,在第一个对象的方法中石可以用“第二个对象.成员”的格式访问第二个对象中的那个private成员变量,可以看这段代码
public class HelloWorld {

private int x = 3;

public static void main(String[] args) {
new HelloWorld().func(new HelloWorld());
}

public void func(HelloWorld a) {
System.err.println(a.x);
}
}
run-main:
3
BUILD SUCCESSFUL (total time: 0 seconds)
mystery1004 2009-09-29
  • 打赏
  • 举报
回复
把你代码发全看看
gukuitian 2009-09-29
  • 打赏
  • 举报
回复
这里面的anotherString是一个String类型,它里面的变量count和value都是private的,但是为什么这里可以直接引用到。
我偿试自己写了一个String ,但是确引用不到这两个变量。这是怎么回事?难道是“源代码有特权”,还是我哪里理解不到位

嘿嘿,源代码当然有特权。private 型的在String类外是不能直接用的,但这个方法是在String类内部,
一个类是可以在内部的方法调自己的private属性的,
你的估计是在外部new 的吧,当然不行
greathawker 2009-09-29
  • 打赏
  • 举报
回复

该方法在String内部, 所以可以引用到. 你自己测试时是在String外部, 当然就引用不到了

fuyou001 2009-09-29
  • 打赏
  • 举报
回复
帮顶下

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧