欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Object

程序员文章站 2022-04-21 21:39:08
...
1.所有类的父类


public static void stringArray(){
String [] strArray = new String[]{};
test(strArray);
}

public static void test(Object[] objectArray){

}


不知道传入参数的类型或兼容所有类型,使用object参数

2.

object.toString()

String.valueOf(object)



public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}


优先选择后者,源码中含有判空操作,避免空指针异常

3.equals

object 的 equals() 与 == 效果相同


public boolean equals(Object obj) {
return (this == obj);
}




public boolean equals(Object anObject) {
// 1.若传入对象为空
if (this == anObject) {
return true;
}
// 2.是否是同一对象 this == anObject 如果是同一对象,直接返回TRUE
// 3.是否是同一类型
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
// 4.众多属性中关键属性是否相同
// 5.如person属性众多,客观上身份证号码相同,即为同一个人
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;
}



4.equals 与 ==

基本数据类型:无equals 方法,无需比较
引用数据类型:


String str1 = new String("123");
String str2 = new String("123");



[table]
||变量名||栈|| 说明|| 堆||
||str1||0x55||堆中所占空间的首地址||"123"||
|| || || || ||
||str2||0x99||堆中所占空间的首地址||"123"||
[/table]

object 的equals方法 与 == 等价,比较的是栈中的内容,
引用类型栈中存储的是堆中的地址,new 操作会开辟新的空间,所有一定不等
相关标签: object