黑马程序员.Android攻城狮.JAVA高新.2.1.Java 高新技术(1)

Java高新技术(1)

---------- android培训、java培训、期待与您交流!----------

1、JDK新特性

        JDK1.5的新特性,可变参数,增强for循环,自动拆箱与装箱,枚举,反射,JavaBean内省,beanutils工具包
        (1) 静态导入:
        普通的import是导入一个类,或者一个包中的所有的类
         静态导入:是导入一个类中的某个静态方法或者所有静态方法。例如导入Math.random()方法,
         实际开发中,我们要引用某个包下的某个类中的静态方法时,为了方便代码书写,JDK1.5提供了静态导入的新特性。
         例如,我们要使用java.lang包下Math类的求最大值方法max()时,可以在类顶端加上如上代码:
         的多个静态方法,或者所有静态方法时,可以全部逐一导入,也可以一次性导入,形如:
         import static java.lang.Math.max;
         之后,若我们要用到这个类下的max()方法,时,就可以不用加上类名了,直接用max(a,b);这种形式。若我们还需要改类下
         import static java,lang.Math.*;
         注意:静态导入是JDK1.5的新特性,1.5之前没有这个特性,所以以后在修改和维护JDK1.5前的程序时,这个要稍作注意。
        (2) 可变参数
        一个方法的参数个数不固定,可变参数的特点:只能出现在参数列表的最后,...位于变量类型和变量名之间,前后有无空格都可以,调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法中以数组的形式访问可变参数。
public class demo {
	public static void main(String[] args) {
		function("hello",3,1,6,2,6,3);
	}
	public static void function(String a,int...args){
		for(int i=0; i
   
   

        (3) 增强for循环
        以上代码可以利用增强for循环修改为:
public class demo1 {
	public static void main(String[] args) {
		function("hello",3,1,6,2,6,3);
	}
	public static void function(String a,int...args){
		for(int arg : args){
			System.out.println(arg);
		}
	}
}

        其中的集合变量可以为数组或者是实现了iterable接口的集合

2、枚举

        在JDK1.5之前,Java有两种方法定义一个新的类型:类和接口,在一些特殊情况下这两种类型还是不太合适,在JDK1.5之后引入了枚举类型。
        我们可以使用枚举——enmu类型来定义一个新的数据类型,这个数据类型中只有有限个对象,比如一周只有七天,一年只有十二个月等,那么就可以使用枚举来表示这种类型,
        枚举类是一个特殊的类,它一样可以有自己的方法和属性,可以实现一个和多个接口,也可以定义自己的构造器。一个Java源文件中最多只能定义一个public访问权限的枚举类,且该Java源文件也必须和该枚举类的类名相同。但枚举类终究不是普通的类,它与普通类有如下的区别:
        (a) 枚举类可以实现一个或多个接口,使用enum定义的枚举类默认继承了java.lang.Enum类,而不是继承Object类。其中java.lang.Enum类实现了java.lang.Serializable和 java.lang.Comparable两个接口。
        (b) 枚举类的构造器只能使用private访问控制符,如果省略了其构造器的访问控制符,则默认使用private修饰;如果强制指定访问控制符,则只能指定private修饰符。
        (c) 枚举类的所有实例必须在枚举类中显式列出,否则这个枚举类将永远都不能产生实例。列出这些实例时,系统会自动添加public static final修饰,无序显式添加。
        (d) 所有枚举类都提供一个values方法,该方法可以很方便地遍历所有枚举值。
        枚举类常用的方法:
                protected Object clone():抛出CloneNotSupportedException
                int compareTo(E o):比较此枚举与指定对象的顺序
                boolean equals(Object other):当指定对象等于此枚举常量时,返回true
                protected void finalize():枚举类不能有 finalize 方法
                Class<E> getDeclaringClass():返回与此枚举常量的枚举类型相对应的Class对象
                int hashCode():返回枚举常量的哈希码
                String name():返回此枚举常量的名称,在其枚举声明中对其进行声明
                int ordinal():返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)
                String toString():返回枚举常量的名称,它包含在声明中

                static <T extends Enum<T>> T valueOf(Class<T> enumType, String name):返回带指定名称的指定枚

        举类型的枚举常量

        枚举元素必须放在枚举体的第一行,枚举元素列表的后面要有分号与其他元素分隔。

        带构造方法的枚举:构造方法必须是私有的,只要第一次用到了枚举类,那么其中的构造方法就会被调用,

public class demo {
	public static void main(String[] args) {
		WeekDays day1 = WeekDays.Tue;
	}
	public enum WeekDays{
		Mon(1),Tue(2),Wed;
		private WeekDays(){
			System.out.println("one");
		}
		private WeekDays(int day){
			System.out.println("two");
		}
	}
}

        其输出结果为:
        two
        two
        one
        实现接口的枚举:枚举可以实现一个或多个接口,实现接口时需要实现接口中所定义的抽象方法。
interface Print{
	public abstract String nextColor();
}
public class demo2 {
	public static void main(String[] args) {
		TrafficLamp t1 = TrafficLamp.RED;
		System.out.println(t1.nextColor());
	
	}
	public enum TrafficLamp implements Print{
		RED{
			public String nextColor(){
				return "绿色";
			}
		},
		YELLOW{
			public String nextColor(){
				return "红色";
			}
		},
		GREEN{
			public String nextColor(){
				return "黄色";
			}
		};
	}
}

        带抽象方法的枚举:枚举可以实现接口外,还可以带有抽象方法,每个枚举的对象只要实现了抽象方法就可以。
public class demo2 {
	public static void main(String[] args) {
		TrafficLamp t1 = TrafficLamp.RED;
		System.out.println(t1.nextLamp());
	}
	public enum TrafficLamp{
		RED(30){
			public TrafficLamp nextLamp(){
				return GREEN;
			}
		},
		YELLOW(5){
			public TrafficLamp nextLamp(){
				return RED;
			}
		},
		GREEN(40){
			public TrafficLamp nextLamp(){
				return YELLOW;
			}
		};
		public abstract TrafficLamp nextLamp();
		private int times;
		private TrafficLamp(int time){
			this.times = time;
		}
	}
}

---------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值