马太效应 发表于 2017-8-15 22:20:46

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]
查看完整版本: Java暑期学习Day40