Java要点和《疯狂Java讲义》例程整理(四)

2014-11-24 03:26:37 · 作者: · 浏览: 4
n

匿名内部类

构造格式如下
new 父类构造函数(实参列表) | 实现接口()
{
        //匿名内部类的类体部分
}

枚举类

枚举类可以实现接口,使用enum定义的枚举类继承了java.lang.Enum类,而不是Object类,并且实现了java.lang.Serializable和lava.lang.Comparable两个接口使用enum定义、非抽象的枚举类默认会使用final修饰,因此不能派生子类枚举类的构造器只能使用private访问控制符枚举类的所有实例必须在枚举类的第一行显示列出,且系统会自动添加public static final修饰符 使用示例 P215
public class Test {
	public void judge(SeasonEnum e){
		switch (e) {
		case SPRING:
			System.out.println("Spring");
			break;
		case SUMMER:
			System.out.println("Summer");
		case FALL:
			System.out.println("Fall");
		case WINTER:
			System.out.println("Winter");
		default:
			break;
		}
	}
	public static void main(String[] args){
		for(SeasonEnum s:SeasonEnum.values())
		{
			System.out.println(s);
		}
		new Test().judge(SeasonEnum.SPRING);
	}
}

enum SeasonEnum
{
	SPRING, SUMMER, FALL, WINTER;
}

SPRING
SUMMER
FALL
WINTER
Spring

枚举类的Field,方法和构造器

最科学合理的使用方法 P218
public class Test {
	public static void main(String[] args){
		Gender gender = Enum.valueOf(Gender.class, "FEMALE");
		System.out.println(gender.getName());
	}
}

enum Gender{
	MALE("男"), FEMALE("女");
	private final String name;
	private Gender(String name){
		this.name = name;
	}
	public String getName()
	{
		return this.name;
	}
}


包含接口和抽象方法的枚举类

P219,P220
public enum Operation implements Info{
	PLUS
	{
		public double eva l(double x, double y)
		{
			return x+y;
		}
		
		public void info()
		{
			System.out.println("Plus");
		}
	},
	MINUS
	{
		public double eva l(double x, double y)
		{
			return x-y;
		}
		
		public void info()
		{
			System.out.println("Minus");
		}
	},
	TIMES
	{
		public double eva l(double x, double y)
		{
			return x*y;
		}
		
		public void info()
		{
			System.out.println("Times");
		}
	},
	DIVIDE
	{
		public double eva l(double x, double y)
		{
			return x / y;
		}
		
		public void info()
		{
			System.out.println("Divide");
		}
	};
	
	public abstract double eva l(double x, double y);
	
	public static void main(String[] args) {
		System.out.println(Operation.PLUS.eva l(3, 4));
		System.out.println(Operation.MINUS.eva l(3, 4));
		System.out.println(Operation.TIMES.eva l(3, 4));
		System.out.println(Operation.DIVIDE.eva l(3, 4));
	}

}

interface Info{
	void info();
}

7.0
-1.0
12.0
0.75

Set

Set实现了Collection接口。Set不允许包含重复元素,集合多个对象之间没有明显的顺序。Set的实现有 HashSet 添加进HashSet的Object必须实现了hashCode()方法。元素之间用equals()方法比较是否相同。它有一个子类 LinkedHashSet,用hashCode()决定元素的储存位置,并将元素按插入顺序连接起来。TreeSet 可以确保集合中元素处于排序状态。

List

List实现了Collection接口。List代表一个元素有序,可重复的集合,集合中每个元素都有其对应的顺序索引。List允许包含重复元素,可以通过索引来访问指定位置的元素。List的实现有 ArrayList LinkedList 使用 Arrays.asList()方法可以生成一个固定长度的List

Map

Map用于保存具有映射关系的数据,因此Map保存着两组值,key和value。key和value存在单向一对一关系

使用泛型

List
  
    strList = new ArrayList
   
    (); Map
    
      scores = new HashMap
     
      (); // After 
      Java 7 List
      
        strList = new ArrayList<>(); Map
       
         scores = new HashMap<>();
       
      
     
    
   
  

Iterator

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

public class Test {
	public static void main(String[] args){
		List
  
    strList = new LinkedList
   
    (); strList.add("a"); strList.add("b"); strList.add("c"); strList.add("d"); Iterator it = strList.iterator(); while(it.hasNext()) { String str = (String)it.next(); System.out.println(str); if(str.equals("c"