以下是我的理解,如果有理解不正确的地方,还请前辈们指出来,感谢所有热心帮助渴望进步的晚辈们的前辈!基本类型是java里最基础的类型,所有的引用类型都基于基本类型。不说String类吧,我感觉它比较特殊,它是由基本类型构成的引用类型(字符数组)和其它基本类型构成的。随便写一个简单的类:class A{
private int i;
pvivate boolean b;
}这个类就是由int和boolean这两种基本类型构成的,当然,它可以有自己的其它方法。不,在java里,随便一个类肯定有自己的方法,因为它们都继承自Object。所谓类,就是基本类型和方法的组合。而==是用于比较基本类型的值,或者用于比较引用类型的地址(我在想也许内存地址也是一种基本类型)。而equals是基于==,通过==比较封装在引用类型里的基本类型的值来比较引用类型是否相等的。所有类型的基类Object类,它的equals方法源代码只有一句:
public boolean equals(Object obj) {
return (this == obj);
}再看看特殊的String类的equals方法: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;
}
}仔细看,都是通过比较基本类型!=或者==来返回equals的值的。我上面的那个类的equals方法可以写成
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj instanceof A) {
if(this.i==obj.i && this.b==obj.b)
return true;
}
return false; }
我觉得“类”、“封装”这些概念现在已经挺清晰的了。另外,我一直在想,数组应该是一个引用类型,是一种特殊的引用类型,这种引用类型的成员都是同一种类型。我觉得数组是一种比其它引用类型更底层的引用类型。以上如果有理解不正确的地方,还请前辈们一定指出来,再次感谢!
private int i;
pvivate boolean b;
}这个类就是由int和boolean这两种基本类型构成的,当然,它可以有自己的其它方法。不,在java里,随便一个类肯定有自己的方法,因为它们都继承自Object。所谓类,就是基本类型和方法的组合。而==是用于比较基本类型的值,或者用于比较引用类型的地址(我在想也许内存地址也是一种基本类型)。而equals是基于==,通过==比较封装在引用类型里的基本类型的值来比较引用类型是否相等的。所有类型的基类Object类,它的equals方法源代码只有一句:
public boolean equals(Object obj) {
return (this == obj);
}再看看特殊的String类的equals方法: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;
}
}仔细看,都是通过比较基本类型!=或者==来返回equals的值的。我上面的那个类的equals方法可以写成
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj instanceof A) {
if(this.i==obj.i && this.b==obj.b)
return true;
}
return false; }
我觉得“类”、“封装”这些概念现在已经挺清晰的了。另外,我一直在想,数组应该是一个引用类型,是一种特殊的引用类型,这种引用类型的成员都是同一种类型。我觉得数组是一种比其它引用类型更底层的引用类型。以上如果有理解不正确的地方,还请前辈们一定指出来,再次感谢!
解决方案 »
- 线程同步的问题,急!!!
- 既然set是基于map实现的,为什么还要用set?
- 请大家推荐一本关于设计模式的书籍,要通俗易懂!最好是java语言描述的
- random for a series of random numbers??????
- 请问在JAVA中是否有类似C++的全局变量?!
- 散分先:(菜鸟问题)关于在jsp中调用xml中的数据
- 小弟是新手,这里一个问题,请帮忙看看,怎么解决?
- 主题:有关AWT的问题(程序运行后不能正常退出)
- JavaGui问题:怎么控制面板的更新?
- 编译java文件时会自动寻找classpash路径下文件吗
- 各个大哥哥,大姐姐,这断代码是什么意思
- 如何将JPG图片转换成MPEG格式?
if (this == obj) {
return true;
}
if (obj instanceof A) {
A anotherA = (A) obj;
if (this.i == anotherA.i && this.b == anotherA.b)
return true;
}
return false; }好了,呵呵。