码迷,mamicode.com
首页 > 编程语言 > 详细

java学习05

时间:2014-09-18 09:37:53      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   java   for   数据   2014   div   

  

package day20140918;

import org.junit.Test;
/*
 * 由于昨天面试问到了单例模式
 * 回顾一下
 * 单例设计模式
 * */


//饿汉式,类一加载就存在,线程安全
class SingleE{

    //定义一个私有成员,便于测试
    private int num = 1;
    private static final SingleE single = new SingleE();
    
    private SingleE(){
        num++;
    }
    
    public static SingleE getInstance(){
        return single;
    }
    
    public int getInt(){
        return num;
    }
}

//懒汉式,后加载,线程不安全
class SingleL{
    
    private SingleL(){}
    
    private static SingleL single = null;
    
    public static SingleL getInstance(){
        //两层判断,提高程序的效率,不加这层判断,则每次都要判断锁,程序效率很低
        if(single == null){
            //加锁,防止多线程时,同时生成多个single,不能保证唯一性
            synchronized (SingleL.class) {
                if(single == null){
                    single = new SingleL();
                }
            }
        }
        return single;
    }
}


public class SingleDemo {
    
    @Test
    public void test(){
        
        SingleE s1 = SingleE.getInstance();
        
        System.out.println(s1.getInt());        //2
        SingleE s2 = SingleE.getInstance();
        
        System.out.println(s1.getInt());        //2
        System.out.println(s2.getInt());        //2
        
    }
    
}

另外,复习了Java中1.5版本增加的枚举类型enum。枚举是一种特殊的类,当我们使用某些数据只需要特定的几个值时,可以使用枚举。当枚举中只有一个对象时,其实就是单例模式!!其他的不说了,上代码~

package day20140918;

import org.junit.Test;

/*
 * 枚举enum的学习,写一个代表星期的枚举,里面有一个方法,返回对象星期的中文名。
 * 
 * */
public class Syudy {
    
    //定义一个枚举,表示星期一到星期天
    enum WeekDay{
        
        //7个对象
        MON("星期一"),
        TUE("星期二"),
        WED("星期三"),
        THU("星期四"),
        FRI("星期五"),
        SAT("星期六"),
        SUN("星期日");
        
        private String weekName;
        
        //构造函数必须私有,因为枚举只能取定义的值,外部不能new对象
        private WeekDay(String weekName){
            this.weekName = weekName;
        }
        
        public String getName(){
            return weekName;
        }
    }
    
    @Test
    public void test1(){
        
        System.out.println(WeekDay.TUE);                  //TUE
        System.out.println(WeekDay.TUE.getName());        //星期二
    }
    
    
    //第二种方法,用抽象函数
    enum WeekDay1{
        
        MON(){
            public String getWeekName(){
                return "星期一";
            }
        },
        
        TUE{
            public String getWeekName(){
                return "星期二";
            }
        },
        
        WED{
            public String getWeekName(){
                return "星期三";
            }
        },
        
        THU{
            public String getWeekName(){
                return "星期四";
            }
        },
        
        FRI{
            public String getWeekName(){
                return "星期五";
            }
        },
        SAT{
            public String getWeekName(){
                return "星期六";
            }
        },
        
        SUN{
            public String getWeekName(){
                return "星期日";
            }
        };
        
        
        //定义一个抽象方法,获得星期中文名
        public abstract String getWeekName();
    }
    
    @Test
    public void test2(){
        
        WeekDay1 fri = WeekDay1.FRI;
        
        System.out.println(fri.getWeekName());       //星期五
        
        //枚举的偏移量,从0开始
        System.out.println(fri.ordinal());           //4
        
        //得到枚举的所有对象
        WeekDay1 [] wds = WeekDay1.values();
        
        for(WeekDay1 wd : wds){
            System.out.println(wd.getWeekName());
        }
        
        /*星期一
        星期二
        星期三
        星期四
        星期五
        星期六
        星期日*/

    }
}

学习是一个不断积累,不断坚持的过程,希望每天都能感觉到自己的进步,工作也会因此而变得更加充实~学习的时候要用心,知其然,还要知其所以然,这是我对我自己的要求,尽量把握每个细节。昨天的面试也证明了,细节决定成败~

java学习05

标签:style   blog   color   使用   java   for   数据   2014   div   

原文地址:http://www.cnblogs.com/superzzh/p/3978499.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!