您的位置:首页 > 职场人生

黑马程序员----高新技术----小知识点之一

2014-06-08 06:02 225 查看


----------------------
android培训 、 java培训 、 期待与您交流! ------------------

1、overload vs override的区别:

     override(重写)

        1、方法名、参数、返回值相同。

        2、子类方法不能缩小父类方法的访问权限。

        3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。

        4、存在于父类和子类之间。

        5、方法被定义为final不能被重写。

    overload(重载)

        1、参数类型、个数、顺序至少有一个不相同。  

        2、不能重载只有返回值不同的方法名。

        3、存在于父类和子类、同类中。

        

2、可变参数的特点:

    只能出现在参数列表的最后。

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

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

    public int add(int x,int... args){

        int sum = x;

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

        //    sum += args[i];

        for(int arg : args)

            sum += arg;

        return sum;

    }

    

3、增强for循环:

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

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

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

    for(int arg : args)

        sum += arg;

            

4、基本数据类型的自动装箱,拆箱:

    自动装箱: Integer num1 = 12;

   自动拆箱: System.out.println(num1 + 12);

   基本数据类型的对象缓存:

        Integer num1 = 12;

        Integer num2 = 12;

        System.out.println(num1 == num2); //打印为true

        

        Integer num3 = 129;

        Integer num4 = 129;

        System.out.println(num3 == num4);//打印为false.,因为超出-127~128.

    flyweight(享元模式):Integer在-127~128的时候应用享元模式,判断两个相等的为true。

        

5、枚举:

    枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法。

    枚举元素必须位于枚举体重的最开始部分,枚举元素列表最后要有分号和其他成员分隔。若把枚举中的成员方法或变量等放在枚举元素的最前面,编译器会报错。

   带构造方法的枚举:

        构造方法必须定义成私有的。

        如果有多个构造方法,默认选用无参的。

    如果枚举只有一个成员时,就可以作为一种单例的实现方式。

    public class EnumTestMain {

        public static void main(String[] args) {

            WeekDay weekDay = WeekDay.MON;

            System.out.println(weekDay); //MON

            System.out.println(weekDay.name()); //MON

            System.out.println(weekDay.ordinal()); //1

            System.out.println(WeekDay.valueOf("SUN").toString()); //SUN

            System.out.println(WeekDay.values().length); //7

        

        }

    }

    public enum WeekDay {

        SUN(1),MON(5),TUE,WED,THI,FRI,SAT;

    

        private WeekDay(){    //必须是private,默认调用的构造方法是无参的。

            System.out.println("first");

        }

        private WeekDay(int day){

            System.out.println("second");

        }

    }

    

    //实现带有抽象方法的枚举
public class EnumTestMain {

public static void main(String[] args) {
WeekDay weekDay = WeekDay.MON;
System.out.println(weekDay); //MON
System.out.println(weekDay.name()); //MON
System.out.println(weekDay.ordinal()); //1
System.out.println(WeekDay.valueOf("SUN").toString()); //SUN
System.out.println(WeekDay.values().length); //7
TrafficLamp tlamp = TrafficLamp.GREEN;
TrafficLamp nextTlamp = tlamp.nextLamp();
System.out.println(nextTlamp);
}
}

enum WeekDay {
SUN(1),MON(5),TUE,WED,THI,FRI,SAT;

private WeekDay(){
System.out.println("first");
}
private WeekDay(int day){
System.out.println("second");
}
}

enum TrafficLamp{
RED(30){
public TrafficLamp nextLamp(){
return GREEN;
}
},
GREEN(28){
public TrafficLamp nextLamp(){
return YELLOW;
}
},
YELLOW(2){
public TrafficLamp nextLamp(){
return RED;
}
};

public abstract TrafficLamp nextLamp();
private int time;
private TrafficLamp(int time){
this.time = time;
}
}

打印结果为:

first

first

MON

MON

1

SUN

7

YELLOW
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: