黑马程序员----高新技术----小知识点之一
---------------------- 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
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); //MONSystem.out.println(weekDay.name()); //MONSystem.out.println(weekDay.ordinal()); //1System.out.println(WeekDay.valueOf("SUN").toString()); //SUNSystem.out.println(WeekDay.values().length); //7TrafficLamp 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
firstMON
MON
1
SUN
7
YELLOW
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
