黑马程序员----jdk1.5新特性

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

1.静态导入
import static java.lang.Math.max; 导入到方法
 System.out.println(max(3, 6)); 
2.可变参数
public class VarableParameter {
    public static void main(String[] args) {
        System.out.println(add(1, 2, 4));
        int[] argss = new int[]{2,3,4};
        System.out.println(add(1, argss));
    }
    public static int add(int x, int... args) {
        int sum = 0;
        for (int i = 0; i < args.length; i++) {
            sum += args[i];
        }
        return sum;
    }
}
3.增强for
public class VarableParameter {
    public static void main(String[] args) {
        System.out.println(add(1, 2, 4));
        int[] argss = new int[]{2,3,4};
        System.out.println(add(1, argss));
    }
    public static int add(int x, int... args) {
        int sum = 0;
        for (int i : args) {
            sum += i;
        }
        return sum;
    }
}
4.基本数据类型的自动装箱与拆箱
public class AutoBox {
    public static void main(String[] args) {
        Integer i = 3;
        System.out.println(i + 11);
        Integer i1 = 11;
        Integer i2 = 11;
        Integer i3 = Integer.valueOf(11);
        // 结果为true 如果是-128-127的数 享元模式 共有小的数总用常用
        System.out.println(i1 == i2);
        System.out.println(i2==i3);
    }
}
5.枚举
public class EnumTest {
    public static void main(String[] args) {
        WeekDay wd = WeekDay.SUN;
        System.out.println(wd);
        System.out.println(WeekDay.valueOf("MON"));
        System.out.println(WeekDay.values());
        System.out.println(Arrays.toString(WeekDay.values()));
        for (WeekDay wds : WeekDay.values()) {
            System.out.println(wds);
        }
    }
    public enum WeekDay {
        SUN, MON, TUE, WED, THI, FRI, SAT
    }
}
实例2
public class EnumTest {
    public static void main(String[] args) {
        WeekDay wd = WeekDay.SUN;
        System.out.println(wd.day);
        System.out.println(WeekDay.valueOf("MON"));
        System.out.println(WeekDay.values());
        System.out.println(Arrays.toString(WeekDay.values()));
        for (WeekDay wds : WeekDay.values()) {
            System.out.println(wds);
        }
    }
    public enum WeekDay {
        SUN(1), MON, TUE, WED, THI, FRI, SAT;
        private int day;
        private WeekDay() {
        };
        private WeekDay(int days) {
            this.day = days;
        }
    }
}
枚举与类的区别是在编辑前对象就已经存在 也就是SUN这些都是enum的实例
1.枚举的构造方法 在实例(sun)代码
2.是独一份的也就是单例只能在enum中创建 在外部不能创建
3.如果你想创建一个单例 就可以用只有一个实例的枚举 构造方法默认 而且有一个生成好的实例 
 
 
6.注解  
1.先了解3个基本的注解        

  ---@Override    方法上面 判断是否重

  ---@Deprecated   方法上面 表示方法废弃不建议被使用

  ---@SuppressWarnings("deprecation")  压制警告(废弃的警告)

2.学会自己写注解

---注解跟类接口同级  书写方式public @interface ItcastAnnotation  

---在注解上定义注解   

// 元注解 元数据 元信息 retention表示3中类型 class source runtime// target 表示注解的作用范围 比如 method 方法上面 type 类接口 注解枚举上面@Target({ ElementType.METHOD, ElementType.TYPE })@Retention(RetentionPolicy.RUNTIME)

这两个注解定义元素都是 枚举类型

   public @interface Target { ElementType[] value(); }    public @interface Retention { RetentionPolicy value(); }

一个注解实例

public @interface ItcastAnnotation {
    String color() default "blue";

    // 特殊属性比如 @SuppressWarnings("deprecation") 就是等于value=“deprecation”
    // 但只有String value(); 时才能用 如果还有 String color() 但还想用就要设定默认值default "blue";
    // 支持 @ItcastAnnotation("qixing")与
    // @ItcastAnnotation(color="red",value="qixing")
    String value();

    // 定义数组属性
    int[] arrayAttr() default { 3, 4, 5 };
    // 可以是枚举
    /*
     * public @interface Target { ElementType[] value(); } 
     * public @interface Retention { RetentionPolicy value(); }
     */
    
    //还可以是annotation
    MyAnnotation annotationAttr() default @MyAnnotation("qixing");
    
    

}
注解的使用
@ItcastAnnotation(color="red",value="qixing",annotationAttr = @MyAnnotation("yinhe"))
public class AnnotationTest {
//注解实例  
    //压制警告
    @SuppressWarnings("deprecation")

    public static void main(String[] args) {

/*        System.runFinalizersOnExit(true);
        System.out.println("nihao");*/
        if ( AnnotationTest.class.isAnnotationPresent(ItcastAnnotation.class)) {
           
            ItcastAnnotation anno = AnnotationTest.class.getAnnotation(ItcastAnnotation.class);
            System.out.println(anno);
            System.out.println(new Person());
            System.out.println(anno.color());
            System.out.println(anno.value());
            System.out.println(anno.arrayAttr().length);
            System.out.println(anno.annotationAttr().value());
          
           
        }
        
    }}

注解是什么呢 比如方法上的注解

1.ItcastAnnotation anno = AnnotationTest.class.getAnnotation(ItcastAnnotation.class); 得到方法上单注解名称

2.通过反射class.forname()得到 注解对象

3.比如3大基本注解 其实就是得到名字 jvm判断对象名字是否与override相等 如果相当就去执行判断是否重写的方法








---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值