Object

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");



变量名 说明
str1 0x55 堆中所占空间的首地址 "123"
                                
str2 0x99 堆中所占空间的首地址 "123"


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

猜你喜欢

转载自mingyundezuoan.iteye.com/blog/2363199