黑马程序员——java加强学习

来源:互联网 发布:数据库工程师待遇知乎 编辑:程序博客网 时间:2024/05/22 13:18
 ------- android培训、java培训、期待与您交流! ----------

泛型

增强for语句

for(type element : array){    …System.out.println(element);    …}

List<String> list = new ArrayList<String>();list.add("张三");list.add("李四");list.add("王五");// 普通的循环方式for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}// 使用For each循环for (String element : list) {System.out.println(element);}//迭代遍历        for (Iterator<String> iter = list.iterator(); iter.hasNext();) {            System.out.println(iter.next());        }
因为增强的for循环会丢失下标信息,所以当遍历集合或数组时,如果需要方法集合或数组的下标,最好使用旧式的方式来实现循环或遍历。

枚举

下面是引自《Java in a Nutsbell 》中必须知道的 enum 特性,以了解及更有力的使用它们:

1. 枚举没有公共的构造函数,枚举类型唯一的实例就是这些枚举声明。

2. 枚举类型不是 Cloneable ,所以无法为现有的实例创建副本。

3. 枚举类型实现了 java.io.Serializable ,所以它们可以被序列化,但 java 的序列化机制会特别处理它们,以确保不会有新的实例被创建。

4. 枚举类型的实例是永远都不会变的:每一个枚举类型值都会保留它自己的特性。

5. 枚举类型的实例是存储于类型本身的 public static final 字段里,因为这些字段为 final ,所以它们不可能被不恰当的值改写。

6. 依照惯例,枚举类型的值都是使用大写字母来编写,就和其他 static final 字段一样。

7. 因为有一个严格限制的具有不同枚举值的集合,所以使用 “==” 运算符比较枚举值来代替调用 equals ()  Method  一定是安全的。

8. 然而,枚举集合的确有个可行的 equals ()  method 。该 method 在内部使用 == 而且他被定义为 final ,所以他无法被覆盖。这个可行的 equals ()  method 允许枚举值被用作类似 Set 、 List 与 Map Collection 的成员。

9. 枚举类型有个可行的 hashCode ()  method ,与它们的 equals ()  method 一致。和 equals ()一样, hashCode ()也被定义为 final 的。它允许枚举值配合类似 java.util.HashMap 这样的类一起使用。

10. 枚举类型实现了 Java.lang.comparable, 而且 compareTo ()  method 会依它们出现在 enum 声明里的顺序来排序枚举值。

11. 枚举类型包含了可行的 toString ()  method ,他会返回枚举值的名称。例如, WeekDay.SUN.toString() 在默认情况下会返回 “SUN” 字符串,此 method 并没有被定义为 final , enum 类型可以依选择提供 custom implementation 。

12. 枚举类型提供了一个静态 valueOf ()方法,它与默认的 toString ()方法相反。把一个字符串变成一个枚举对象: static valueOf() Method 。

13. 枚举类型定义了一个名为ordinal()的final实例的方法:获得这个枚举类的 index (从 0 开始的)。这个方法会为每个枚举类型返回一个整数

14. 每个枚举类型都会静态的 values() method ,返回一个包含完整元素的数组。

15. 枚举类型是 java.lang.Enum 的子类,他是在 java5.0 出现的( Enum  本身并不是枚举类型)。你不能以手动方式扩展 Enum 类以产生枚举类型,如果试图这样做,那么会产生变异错误。定义枚举类型的唯一方式就是使用 enum 关键字。

16. 要扩展枚举类型是不可能的。枚举类型实际上是 final ,但 final 关键字在它们的声明里是不必要且不被允许的!因为 enum 实际上是 final ,所以它不会是 abstract 。

17. 和类一样,枚举类型可以实现接口。

在5.0 以后, switch 语句除了支持 byte 、 short 、 int 和 char 外,还支持 enum (枚举)。


普通枚举类型

public enum WeekDay {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday}
带参数的枚举类型





原创粉丝点击