zoukankan      html  css  js  c++  java
  • java高新技术

    一、静态导入:

    import static语句导入一个类中的某个静态方法或所有方法;

    例子:

    1.import static java.lang.Math.max;

    只是导入了Math类中的max方法,这是只能max方法可以省略Math

    //System.out.println(Math.max(3, 6));

    System.out.println(max(3, 6));

    System.out.println(Math.abs(3 - 6));

    2.import static java.lang.Math.*;

    导入Math类中所有的静态方法;这是调用Math的静态方法都可以省略类名;

    System.out.println(max(3, 6));

    System.out.println(abs(3 - 6));

    二、可变参数:

    特点:

    1.只能出现在参数列表的最后;

    2....位于变量类型和变量名之间,前后有无空格都可以;

    3.调用可变参数的方法时,编译器为该可变参数隐含创建数组,在方法体中以数组的形式访问可变参数;

    例子:

    public class VariableParameter {


        public static void main(String[] args) {
     
                   System.out.println(add(2,3));
                    System.out.println(add(2,5,6));
         }
          public static int add(int x,int... args)
         {
                       int sum = x;
                     //增强for循环
                  for(int arg : args) //迭代出每一个元素值;
                     {
                         sum += arg;
                     }
                    return sum;
            }

    }

    三、增强for循环

    1.语法:

    for(type 变量名 : 集合变量名){}

    2.注意事项:

    迭代变量必须在()中定义;

    集合变量可以是数组或实现了Iterable接口的集合类

    例子:

     public static int add(int x,int... args)
      {
                       int sum = x;
                     //增强for循环
                  for(int arg : args) //迭代出每一个元素值;
                     {
                         sum += arg;
                     }
                    return sum;
         }

    四、基本数据的自动装箱拆箱

    1.自动装箱:

    Integer num = 12;

    2.自动拆箱

    System.out.pritnln(num + 12);

    3.享元模式:

    Integer a1 = 12;

    Integer a2 = 12;

    System.out.println(a1 == a2); //true

    五、枚举:

    1.枚举就是要让某个类型的变量的取值只能为若干个固定值的一个;

    2.在枚举类中定义其他功能或构造方法,应该放在枚举元素列表之后。

    3.枚举中元素就是这个枚举类的实例对象,如果调用相应的构造函数,

    就在元素后加括号,传递相应的参数;

    4.枚举中构造函数,必须私有;

    例子:

    public class EnumTest {

     /**
      * @param args
      */
            public static void main(String[] args) {
                 // TODO Auto-generated method stub
                 WeekDay1 weekDay = WeekDay1.MON;
                 System.out.println(weekDay.nextDay());
      
                  WeekDay weekDay2 = WeekDay.FRI;
      
                    System.out.println(weekDay2);
                   System.out.println(weekDay2.name());
                //打印顺序
                  System.out.println(weekDay2.ordinal());
                     //将前台传递过来的值,转换成枚举类
                System.out.println(WeekDay.valueOf("SUN").toString());
                   /          /将枚举类中的元素,转换成数组;
                    System.out.println(WeekDay.values().length);
             }
     
               public enum WeekDay
                {
                       SUN(0),MON(),TUE,WED,THI,FRI(5),SAT;
                        private WeekDay()
                       {
                                 System.out.println("first");
                       }
                         private WeekDay(int Day)
                         {
                                   System.out.println("second");
                           }
               }

    }

    六、反射:

    反射的基石:Class类;

    反射就是把java类中的各种成分映射成相应的java类:

    一》得到各个字节码对应的实例对象(Class类型)三种方法

    1.类名.class;如:System.class

    2.对象.getClass();如:new Date().getClass();前提必须由对象名;

    3.Class.forName(“类名”);如;Class.forName(“java.util.Date”);

    1.构造函数的反射:

    得到某个类的所有构造函数:

    Constructor[] constructors = Class.forName(“java.lang.String”).getConstructors();

    2.成员变量的反射:

    ReflectPoint pt1 = new ReflectPoint(3,5);

      Field fieldY = pt1.getClass().getField("y");
     
      System.out.println(fieldY);
      System.out.println(fieldY.get(pt1));

    3.成员方法的反射:

    一》反射成员方法格式:

    Method method = String.Class.getMethod(“charAt”,parameterType);

    Method类  反射名 字节码.getMethod(“方法名”,参数列表);

    注意:参数类型用class对象表示;

    七、注解:

    一》一个注解就是一个类,

    二》作用就是传递信息给编译器或者开发工具,告诉它应该怎么做。

    三》常用注解:

    @Override:判断方法有没有覆盖;

    @Deprecated 让某个方法过时;

    @SuppressWarnings("deprecation"):某个方法过时,但还继续想用。

    一》保留在那个生命周期

    @Retention(RetentionPolicy.SOURCE)在源文件阶段,call阶段没有,运行没有

    @Retention(RetentionPolicy.class):在class阶段,运行时没有;(默认阶段)

    @Retention(RetentionPolicy.RUNTIME):保留注解类在运行阶段,

    二》作用在那个成分上

    //说明这个注解类只能作用在方法上;

    @Target(ElementType.METHOD)

    //既能作用在方法上和也能作用类上,用的是数组形式

    @Target({ElementType.METHOD,ElementType.TYPE})

    作用在字段上

    @Target(ElementType.FIELD)

    作用在形式参数上

    @Target(ElementType.PARAMETER)

    一》注解类很想接口

    public @interface ItcastAnnotation {

    //定义注解类属性

    }

    二》注解属性很像方法

    //注解类

    public @interface ItcastAnnotation {

    //定义注解类属性,跟接口一样,前面省略public abstract

    String color();

    String value();

    }

    说明这个注解类有一个color属性和Value属性;

    三》应用带属性的注解类,必须设置属性(以属性的方式设置);

    //应用注解的类

    @ItcastAnnotation(color="red",value="abc")

    四》给注解类的属性设置默认值

    public @interface ItcastAnnotation {

    //定义注解类属性,跟接口一样,前面省略public abstract

    String color() default "blue";

    String value();

    }

    就是说color已经有默认值,可以重新设置,也可以不设置,就相当于该注解类只有一个属性需要设置就是value,所以设置value时,可以省略value名和“=”;

    @ItcastAnnotation("abc")

    五》如果注解类中只有一个属性需要设置值,可以省略属性名和“=

    @SuppressWarnings("deprecation")

    六》在应用注解类的类中获取注解类对象

    ItcastAnnotation annotation = 

    (ItcastAnnotation)AnnotationTest.class.getAnnotation(ItcastAnnotation.class);

    七》调用注解类属性时,是以方法的形式调用;

    //如果应用了某个注解类,就得到这个注解类对象

    //获取注解类对象

    ItcastAnnotation annotation = 

    (ItcastAnnotation)AnnotationTest.class.getAnnotation(ItcastAnnotation.class);

    System.out.println(annotation.color());

    1.int【】数组

    //int[]数组

    int[] arr();

    在应用类中设置int数组属性

    @ItcastAnnotation(arr={1,2,3})

    2.枚举属性

    TrafficLamp lamp() default TrafficLamp.GREEN;

    在应用类中设置属性

    @ItcastAnnotation(clamp=TrafficLamp.RED)

    3.注解属性并缺省值

    MetaAnnotationmetaAnnotation()default@MetaAnnotation(value="annotationA");

    在应用类中设置属性

    @ItcastAnnotation( metaAnnotation=@MetaAnnotation(value="annotationB"))

  • 相关阅读:
    进程线程模型
    操作系统运行机制
    操作系统概论
    排序
    win32消息机制
    win32框架
    map
    deque & list
    vector内部实现2
    蓝桥杯 文化之旅 图论 待复习
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3243925.html
Copyright © 2011-2022 走看看