`
AlexShaw
  • 浏览: 12786 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
最近访客 更多访客>>
社区版块
存档分类
最新评论

黑马程序员_java学习日记_Java高新技术_增强for循环和枚举

 
阅读更多

 ------- android培训java培训java学习型技术博客 期待与您交流! ----------

javaEE

IDE  integrity development environment(集成开发环境)

JMS java mail service

JMX

JNDI

如何自定义java模板:java-editor-templates

静态导入:

//静态导入 JDK1.5之后才出现

//如果不想再调用静态方法时写类名可以使用静态导入

importstatic java.lang.Math.*;

publicclass template {

    publicstaticvoid main(String[] args) {

       //选中要输出内容按下ALT/可以选择输出或其他操作

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

    }

}

可变参数与overLoad面试题

    /**

     * @title main

     * @description可变数组 JDK1.5之后新特性

     * @author Alex Shaw

     * @create_date 2013-3-15

     * @param args

     */

    publicstaticvoid main(String[] args) {

       System.out.println(getSum(3, 4, 5, 7));

       System.out.println(getSum(3, 4, 5));

 

    }

    //调用可变参数时,会将可变参数变成一个数组,然后访问

    publicstaticint getSum(int a,int ... other)

    {

       int sum = 0;

       for(int i = 0 ; i < other.length; i++)

       {

           sum = sum + other[i] ;

       }

       sum += a;

       return sum;

    }

关于增强for循环

int[] intArray = newint[]{3,5,66,2};

       //for((修饰符)type 变量变量类型的集合)

       //集合必须是实现了iterator接口的才行

       for(int i : intArray)

       {

           //…

       }

自动装箱拆箱(1.5之后出现)

装箱:自动将基本类型包装成包装类

拆箱:

对于基本类型的整数,要装箱成Integer,如果整数在-128-127之间,产生之后会被缓存起来以便多次调用(享元模式)

关于享元模式:如果很多小的对象它们有很多相同的东西,那就可以把它们变成一个对象,那些不同的属性变成方法的参数,称之为外部状态,相同的属性称之为内部状态。

        Integer i = 13;//自动装箱

       System.out.println(i+11);//自动拆箱

       Integer i1 = 13;

       Integer i2 = 13;

       System.out.println(i1 == i2);

枚举:定义一个新的类型,以后使用这个类型的值只能是规定好的那些值,在编译时就可以发现赋予的值不合法

将普通的java类定义成枚举

/**

 *

 * @title Day

 * @description自定义ENUM

 * @author Alex Shaw

 * @version

 * @create_date 2013-3-15

 * @copyright (c) CVIC SE

 *

 */

publicabstractclass Day {

   

    private Day() {

    }

/**

 * 采用抽象类将大量的ifelse转换成一个个的独立的类

 */

       publicstaticfinal Day monday = new Day(){

           @Override

           public Day nextDay() {

              returnthusday;

           }

       };

       publicstaticfinal Day thusday = new Day(){

           @Override

           public Day nextDay() {

              returnnull;

           }

       }

    public Day getDay()

    {

       if(this == monday)

       {

           returnmonday;

       }else

       {

           returnthusday;  

       }

    }

    public String toString()

    {

       returnnull;

    }

    publicabstract Day nextDay();

}

枚举相当于一个类,枚举中的元素相当于这个类的一个对象      

package com;

 

publicclass Day1 {

 

    /**

     * @title main

     * @descriptionTODO

     * @author Alex Shaw

     * @create_date 2013-3-15

     * @param args

     */

    publicstaticvoid main(String[] args) {

       //通过传过来的字符串,转换成一个对象

       System.out.println(WeekDay1.valueOf("SUN"));

       System.out.println(WeekDay1.SUN.name());

       //返回这个对象是第几个元素

       System.out.println(WeekDay1.SUN.ordinal());

       //返回这个枚举的一个数组

       System.out.println(WeekDay1.values().length);

 

    }

 

    publicenum WeekDay1 {

 

       SUN,MON,TUS,WED,THIR,FRI,SAT

    }

}

枚举加强,枚举的元素列表必须在前面

枚举的构造方法只能是私有的,其次可以再构造方法之后假如参数

publicenum WeekDay1 {

 

       SUN,MON,TUS,WED,THIR,FRI,SAT;

       private WeekDay1()

       {

       System.out.println("first");   

       }

       private WeekDay1(int a)

       {

       System.out.println(a);  

       }

    }

有抽象方法的枚举

/**

 *

 * @title TrafficLamp

 * @description交通灯

 * @author Alex Shaw

 * @version

 * @create_date 2013-3-15

 * @copyright (c) CVIC SE

 *

 */

publicenum TrafficLamp {

//如果一个枚举定义一个实例,那就是个单例

    RED(30){

 

       @Override

       public TrafficLamp nextLamp() {

           returnGREEN;

       }

      

    },GREEN(0){

 

       @Override

       public TrafficLamp nextLamp() {

           returnYELLOW;

       }

      

    },YELLOW(33){

 

       @Override

       public TrafficLamp nextLamp() {

           returnRED;

       }

      

    };

    //这个方法的返回值还是这个类的一个实例

    publicabstract TrafficLamp  nextLamp();

    privateinttime;

    private TrafficLamp(int time)

    {

       this.time = time;

    }

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics