Object:所有类的超类(与C++不同)
如果没有明确的指出一个类的超类,那么Object就被认为是这个类的超类。
可以使用Object类型的变量引用任何类型的对象
缺陷::::::
Object类型的变量只能用于作为各种值的持有者,要想对其中的内容进行具体的操作,还需要清楚对象的原始类型,并进想相应的类型转换:
Employee e = (Employee) obj;
equals方法
用于检测一个对象是否等于另外一个对象。(只有两个对象属于同一个类时,才有可能相等)
equals具有的特性:
(1)自反性:对于任何非空引用x,x.equals(x)应该返回true
(2)对称性:对于任何引用x和y,当且仅当y.equals(x)返回true,x.equals(y)也应该返回true
(3)传递性:对于任何引用x,y和z,如果x.equals(y)返回true,y.equals(z)返回true,x.equals(z)也应该返回true
(4)一致性:如果x和y引用的对象没有发生变化,反复调用x.equals(y)应该返回同样的结果
(5)对于任何非空引用x,x.equals(null)应该返回false
5.3泛型数组开始
java容许在运行时确定数组的大小
例如
int actualSize = ...;
Employee[] staff = new Employee[actualSize];
这段代码的缺陷是一旦确定了数组的大小再去改变它那就变得不容易了
ArrayList是一个采用类型参数的泛型类。(当作vector来看)
下面声明和构造一个保存Employee对象的数组列表:
ArrayList<Employee> staff = new ArrayList<Employee>();
关于ArrayList的使用
使用get和set方法实现访问或改变数组元素的操作,而不是用人们喜爱的[]语法格式。
要设置第i个元素
staff.set(i,harry);
获取元素:
Employee e = staff.get(i);
5.4对象包装器与自动装箱
包装器:有时候需要把int这样的基本类型转换为对象,所有的基本类型都有一个与之对应的类。例如,int对应的是Integer类,还有其他的内置内省也都有对应的存在,基本上都是大写第一个字母。
特点:对象包装器类是不可变的,一旦构造了包装器,就不允许更改包装在其中的值,对象包装器类还是final,因此不能定义它们的子类。
ArrayList<Integer> list = new ArrayList<>[];
list.add(3);//自动装箱,会被分解为list.add(Integer.valueOf(3));
Integer i3 = 200;
Integer.valueOf(200);
int i1 = i3;
i3.intValue();