Object类
在Java中,只有基本类型(数值、字符、布尔型)不是对象,所有数组、字符串其他类型都是继承与Object类
equals方法:
用于检查一个对象是否等于另一个对象,在Object中(原始的默认实现)是查看两个对象是否具有相同的引用,如果两者具有相同的引用就一定是相等的
然而,经常要通过对象的状态(某些域)来判断相等性
Employee e=new Employee();
Employee e2=new Employee();
if(e.equals(e)) System.out.println("相等1"); //ok
if(e.equals(e2))System.out.println("相等2"); //wrong
Employee e=null;
Employee e2=new Employee();
if(e.equals(e2)) System.out.println("相等1");//运行错误,null不能调用方法,空指针
Employee e=new Employee();
Employee e2=null;
if(e.equals(e2)) System.out.println("相等1");//可以运行,不报错为了避免null的情况,可以用Objects.equals(one,two);
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
泛型数组列表:
数组列表不等于链表,ArrayList不属于Java核心代码,算是第三方代码,和普通的数组一样,动态插入和删除的代价比较高
Java 允许运行时再确定数组的大小,但同样的,一旦确定了数组的大小,就不容易改变。
ArrayList可以解决这个问题。是一个·采用类型参数的泛型类,
ArrayList<Double>a=new ArrayList<>();
ArrayList<Double>a=new ArrayList();不加尖括号也是可以的,是老版的方法,保存的是Object
如果add时,内部数组已经满了,ArrayList会自动创建更大的数组,并将所有的对象拷贝过去。
ensureCapacity(int)用来提前分配内部数组的大小,避免浪费,但是不影响正常使用,到了不够用的时候还是会创建更大的数组
new ArrayList<>(10)这样给定初始容量(初始化以后capacity为10,但实际的size是0)
一旦确定了数组列表的大小不再变化·,可以调用trimToSize方法,将存储区域的大小调整为当前元素所需要的存储空间,垃圾回收器将回收多余的存储空间
本文探讨了Java中的Object类,说明了默认equals方法的行为,并指出所有非基本类型的对象都继承自Object。此外,还详细介绍了ArrayList,解释了它如何解决数组大小固定的问题,提供了动态扩容的功能。通过示例展示了泛型数组列表的使用,以及如何通过ensureCapacity进行容量预分配和trimToSize方法优化内存使用。

被折叠的 条评论
为什么被折叠?



