1. Iterator 接口
Iterator 一般我们称之为迭代器。它一般用于迭代 ArrayList 等集合。Iterator 中主要的方法有三个,分别是:
boolean hasNext() 判断当前迭代器的下一个位置的值是否为空
E next() 返回迭代器的下一个元素,并将迭代器移动到下一位
void remove() 删除当前迭代器指向的值
获取一个迭代器:(以 ArrayList 为例,其余集合类似)
public class Test {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("aa");
list.add("bb");
list.add("cc");
list.add("dd");
// 获取迭代器(此时可视为迭代器指向的位置为 -1 )
Iterator<String> it = sites.iterator();
//当迭代器的下一个不为空时,则获取下一个的值,并移动迭代器到下一位
while(it.hasNext()) {
System.out.println(it.next());
}
//因此当迭代器指向最后一位时,这时循环条件不成立,也正好遍历完所有的元素
}
}
2. Object 类
在 Java 中,Object 类是所有类的父类。你肯定会有疑问?那为啥我们自己编写类的时候并没有显示的继承 Object 类。答案是:在 Java 中,所有类都隐式或者显式地继承了 Object 类(如果你写明了继承于 Object 类,则为显式;如果你没有写明继承于 Object 类,则为隐式)。
显式继承:
public class Jack extends Object{
}
隐式继承:
public class Jack{
}
不管是显式还是隐式,该类都继承了 Object 类。
由于所有类都继承了 Object 类,那么当然所有类都拥有了 Object 类的方法,甚至可以根据每个类的需要对这些方法进行重写。
对于方法的重写的话需要按照具体的项目需求来设计,并没有过多的约束,因此我这里只介绍 Object 中比较常见的方法,提供其原始的功能(你可以在不用重写的时候直接使用的功能)。
boolean equals(Object o) 比较两个对象是否相等(实际上对比的是两个对象的存储地址是否一致)
int hashCode() 返回对象的 hash 值
String toString() 返回对象的字符串表示形式
题外话:很多时候我们也会对这几个方法进行重写从而适应每个不同的类的需求。例如:有时候我们需要比较的是两个对象对应的字段的值是否相等,而不是存储地址是否相等,因此我们会针对这个类重写equals方法
用于比较两个类对应的字段是否相等。有时候我们需要重写 toString()
方法显示该类的信息(默认的该方法内容也是返回该类的字符串表示,但是是英文的,格式也比较固定)。