博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高薪技术
阅读量:5272 次
发布时间:2019-06-14

本文共 3685 字,大约阅读时间需要 12 分钟。

 

    1、java5的增加for循环

        语法:

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

        注意事项:

  1. 迭代变量必须在()中定义!
  2. 集合变量可以是数组或实现了Iterable接口的集合类

        举例:

     

public static int add(intx , int...args){             int sum=x;            for(int arg: atgs){                         sum+=arg;           }                 ruturn sum;             }

 

  

 

2、枚举

     枚举的作用:

           枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错,枚举可以让编译器在编译的时候就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。

        java5中枚举的基本应用:

          

1 package com.itheima.gaoxin1; 2  3 public class EnumTest { 4  5     /** 6      * @param args 7      */ 8     public static void main(String[] args) { 9         Weekday wd=Weekday.FRI;10         System.out.println(wd);//枚举自动封装了tostring方法11         System.out.println(wd.name());//显示自己的名字12         System.out.println(wd.ordinal());//显示在枚举中的排行13         System.out.println(Weekday.values().length);//枚举的个数14         System.out.println(Weekday.valueOf("SUN"));//设定枚举值15 16     }17     18     public  enum Weekday{19         SUN,MON,TUE,WED,THI,FRI,SAT20     }21 22 }

 

       带有构造方法,抽象方法的枚举。

        

1 package com.itheima.gaoxin1; 2  3 public class EnumTest { 4  5     /** 6      * @param args 7      */ 8     public static void main(String[] args) { 9         Weekday wd=Weekday.FRI;10         System.out.println(wd);//枚举自动封装了tostring方法11         System.out.println(wd.name());//显示自己的名字12         System.out.println(wd.ordinal());//显示在枚举中的排行13         System.out.println(Weekday.values().length);//枚举的个数14         System.out.println(Weekday.valueOf("SUN"));//设定枚举值15 16     }17     18     public  enum Weekday{19         SUN(1),MON(),TUE,WED,THI,FRI,SAT;//必须放在第一行 (1)表示调用带有一个参数的20         private Weekday(){21             System.out.println("空构造函数");22         }23         private Weekday( int day){24             System.out.println("带一个参数的");25         }26     }27     28   public enum TrafficLamp{29       RED(30){30           public TrafficLamp nextLamp(){31               return GREEN;32       }33           },34       GREEN(45){35           public TrafficLamp nextLamp(){36               return YELLOW;37       }38           },39       YELLOW(5)40       {41           public TrafficLamp nextLamp(){42               return RED;43       }};44       45       public abstract TrafficLamp nextLamp();46       private int time;47       private TrafficLamp(int time){48           this.time=time;49       }50   }51       }52       }

3、反射

      反射的基石-->Class类

            如何得到各个字节码对应的实例对象?

           1,类名.class,例如: System.class

           2,对象.getClass(),例如,new Dat().getClass()

           3,Class.forName("类名"),例如 Class.forName("java.util.Date"),

      什么叫反射:反射就是把java类中的各个成分,映射成相应的java类

       Constructor类代表某个类中的构造方法

        得到某个类的所有构造方法:

              eg:Constructor [] constructors=Class.forName("java.lang.String").getConstructors();

          得到某一个构造方法:

                Constructor constructor=Class.forName("java.lang.String").getConstructor(StringBuffer.class)

            //获取方法时要用到类型

       创建实例对象

            通常方式:String str= new  String(new StringBuffer("abc"));

            反射方式:Sting str=(String)constructor.newInstance(newStringBuffer("abc"));

         //调用获得的方法时用用到上面相同类型的实例对象

      Class.newInstance()方法:

         eg:String obj=(String)Class.forName("java.lang.String").newInstance();

          该方法内部先得到默认的构造方法。然后该构造方法创建实例对象

           该方法内部的具体代码用到了缓存机制来保存默认构造方法的实例对象

         成员变量的反射:

      ReflectPoint pt1=new ReflectPoint(3,5);

     Field fileldY=pt1.getClass().getField("y");

     System.out.println(fildeY.get(pt1));

     访问类中的私有变量时:

       Field fileldX=pt1.getClass().getDeclaredField("x");

      fieldX.setAccessible(true);//设为可访问

      System.out.printle(fieldX.get(pt1));

   成员方法的反射:

       Method类代表类中的一个成员方法,

       得到类中的某一个方法:

       eg: Method.charAt=

               Class.forName("java.lang.String").getMethod("charAt",int.class);

        调用方法:

                 通常方式:Ststem.out.pring(str.chatAt(1)));

                 反射方法:Systrm.out.println(chatAt.invoke(str,1));

         如果传递给Method对象的invoke()方法的第一个参数为null,这就意味着该Method对象对应的是一个静态方法

 

 

 

 

转载于:https://www.cnblogs.com/zxd-java/archive/2012/10/27/2741680.html

你可能感兴趣的文章
mybatis_2
查看>>
redis
查看>>
south 命令学习
查看>>
mysql count(*)和count(列)速率
查看>>
iOS开发之记事本
查看>>
Apache
查看>>
Linux基础面试题01
查看>>
python使用datetime模块计算各种时间间隔的方法
查看>>
linux安装服务器
查看>>
C#-datagridview隐藏行头
查看>>
Java并发(一)-了解线程安全
查看>>
RecycleView在一页屏幕只显示一个Item
查看>>
python05
查看>>
spring ioc 源码解析
查看>>
自定制横向ListView资料分享
查看>>
LVM(扩展)
查看>>
bzoj5492:[Hnoi2019]校园旅行
查看>>
机器学习的5种“兵法"
查看>>
最近两个月累啊
查看>>
微信小程序使用字体图标的方法
查看>>