Object
程序员文章站
2022-07-12 15:10:12
...
1.所有类的父类
不知道传入参数的类型或兼容所有类型,使用object参数
2.
优先选择后者,源码中含有判空操作,避免空指针异常
3.equals
object 的 equals() 与 == 效果相同
4.equals 与 ==
基本数据类型:无equals 方法,无需比较
引用数据类型:
object 的equals方法 与 == 等价,比较的是栈中的内容,
引用类型栈中存储的是堆中的地址,new 操作会开辟新的空间,所有一定不等
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 操作会开辟新的空间,所有一定不等
推荐阅读
-
windows10下安装TensorFlow Object Detection API的步骤
-
C#实现xml文件反序列化读入数据到object的方法
-
c# 所有类型都从Object类型派生
-
java实现Object和Map之间的转换3种方式
-
js怎么判断对象是否为空是否存在(js将object转换为数组)
-
Jackson将json string转为Object,org.json读取json数组的实例
-
java中Object源码理解
-
PHP学习记录之面向对象(Object-oriented programming,OOP)基础【类、对象、继承等】
-
PHP学习记录之面向对象(Object-oriented programming,OOP)基础【接口、抽象类、静态方法等】
-
pandas的object对象转时间对象的方法