Day05
2013-3-8 13:09
- java中控制可见的四个修饰符小结:只对本类可见(private)、对一切可见(public)、对所有子类和本包可见(protected)、对本包可见——(一个并不好的默认值),不需要修饰符。
- Object:所有类的根类,在没有显示指定父类的情况下默认父类为Object 。可以使用object变量指向任何类型对象,(C++中没有根类,但是在C++中每个指针都可以转化为void* )。
- Object类中的equals方法用于测试某个对象是否同另一个对象相等,它在Object类中的实现是判断两个独享是否是指向同一块内存区域的。 其中getClass()是返回一个对象所属的类。
- Object类的另一个重要方法,toString,返回一个代表该对象值的字符串,几乎每个类都会覆盖该方法,以便打印对该对象的当前状态的表示。
- 所有的数组类型,不管他是对象数组还是基本类型数组,都是从Object派生来的类类型。例如:、
Employee []staff=new Employee[10];
Object crr=staff;
crr=new int[10];
- 类类型数组可以转化成父类类型的数组,但是不能将基本数据类型数组转换成Object数组。
Static int find(Object[] a ,Object key)
{
Int I;
For (i=0;i<a.length;i++)
{
if(a[i].equals(key)) return I;
}
Else return -1;
}
Employee [] staff=new Employee[10];
Employee harry;
Int n=find(staff,harry);
- 在java中可以再运行时确定数组的大小,而不必在编译阶段就确定数组的大小, int actualSize=…; Employee [] staff=new Employee [actualSize]; 但是这并没有根本解决数组运行时修改数组大小的问题,一旦设置了大小就难改变他。java中解决这个问题的办法是使用一个工作起来很像一个可自动伸缩数组的类。 ArrayList。数组列表是类似数组的对象。
- 数组和数组列表有很大的区别,ArrayList类是个定义于java.util包中的库类。使用add方法可以向数组列表汇总添加新元素:
ArrayList staff=new ArrayList();
staff.add(new Employee(---));
staff.add(new Employee(---));
如果调用add方法,而内部数组已经满了,数组列表将自动创建一个更大的数组,并把较小数组中的对象拷贝到大的数组中。如果能知道或者预计需要存储多少个对象,可以再填充数组列表之前调用ensureCapacity方法。 Staff.ensureCapacity(100); 注意 new arrayList(100)与new Employee[100]有着本质的区别,数组列表的容量是可以扩充的,而数组大小设定后就不能再被改变。
- 数组列表中的size方法可以返回数组列表的实际元素个数。 Staff.size() ;它的功能相当于数组中的a.length。一旦确定数组列表的大小不会再发生变化了,可以调用trimToSize方法调整内存块的大小等于当前元素所需要的存储空间,垃圾回收器将回收任何多余的内存。
- java中没有操作符重载。
- 数组列表的访问: ArrayList类不是java语言的一部分,他只是个提供在标准库中,有某人编写的工具类,所以并不能像访问数组元素时可以使用[],要存取或改变某个数组元素,必须使用get和set方法。例如,要设置第i个元素, staff.set(I,harry); 他等价于数组中的staff[i]=harry; 得到数组列表元素更复杂一些,因为get方法返回的是Object类型,还需要将Object类型转换成你所需要的类型。 如: Employee e=(Employee) staff.get(i);
- 使用下列的方法,可以获得两者的优势,既可以灵活收缩也可以方便访问元素,首先,建立数组列表并增加所有元素。 然后,使用toArray方法将元素拷贝到数组中。
ArrayList list=new ArrayList();
While(..)
{
x=…;'
List.add(x);
}
X[] a=new X[list.seze(0];
List.toArray(a);
- 注意: 在ArrayList中使用set方法是应该注意只有的那个数组列表中的元素个数大于i时才能调用:list.set(i,x);
- 数组列表中的插入和删除: 可以在数组列表的末尾和中间插入元素, staff.add(n,a);n及其后面的元素都向后移动一个位置, Employee e=(Employee)staff.remove(n);
- 对象包装器:有时候我们需要将int这样的基本类型转化为对象,所有基本类I系那个都有与之对应的类,包装器类都有很直观的名字: Integer、Long、Float、Double、Short、Byte、Character、Void和Boolean;