Java暑期学习Day40
今天是第40天,还是尽量多看视频查资料,努力找到记重点的方法<。)#)))≦static/image/hrline/2.gif
①今天做的一些错题涉及的点
方法内定义的变量被称为局部变量。
变量的作用范围从声明开始,直到包含它的块结束。 (重点♥ )
变量必须声明才可以使用。
(不同的方法中定义的变量的变量名可以相同,取决于其作用域)
一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。
接口中所有的方法必须是抽象方法。
抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。(重点♥ )
接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键子。
接口中的方法都是公有的。
如果实现接口的类是抽象类,那么就没必要实现该接口的方法。(重点♥ )
接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法。
②Iterable(java.lang—)和Iterator(java.util—)
相关API
1.Interface Iterable<T>(从JDK1.5开始)
Modifier and Type Method and Description
default void
forEach(Consumer<? super T> action)
对 Iterable的每个元素执行给定的操作,直到所有元素都被处理或动作引发异常。
Iterator<T> iterator()
返回类型为 T元素的迭代器。
default Spliterator<T>
spliterator()
在Iterable描述的元素上创建一个Iterable 。
import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
public class ForEach {
public static void main(String[] args) {
List names=Arrays.asList("a","b","c");//asList()方法接收不定长度自变量
forEach(names);
System.out.println("~~~~~~~");
forEach(new HashSet(names));//HashSet具有接受Collection的构造函数
System.out.println("~~~~~~~");
forEach(new ArrayDeque(names));
}
static void forEach(Iterable iterable){
for(Object o:iterable){
System.out.println(o);
}
}
}
结果是——
a
b
c
~~~~~~~
a
b
c
~~~~~~~
a
b
c
2.public interface Iterator<E>一个集合的迭代器。
Iterator需要的地方Enumeration在Java集合框架。
迭代器有两种不同的枚举方式:
a.迭代器允许调用者在迭代期间从底层集合中删除元素,并具有明确定义的语义。
b.方法名称得到改进。(从JDK1.2开始)
Modifier and Type Method and Description
default void
forEachRemaining(Consumer<? super E> action)
对每个剩余元素执行给定的操作,直到所有元素都被处理或动作引发异常。
boolean hasNext()
如果迭代具有更多元素,则返回 true 。
E next()
返回迭代中的下一个元素。
default void remove()
从底层集合中删除此迭代器返回的最后一个元素(可选操作)。
在JDK5之后,原先定义在Collection中的iterator()方法,提升至新的java.util.Iterable父接口,增强式for循环(编译程序蜜糖)可运用在数组上,还可在操作Iterable接口的对象上。
页:
[1]