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

---------------------- 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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值