黑马程序员----高新技术----小知识点之一
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
相关文章推荐
- 黑马程序员_高新技术部分知识点
- 黑马程序员---Java高新技术反射知识点总结
- 黑马程序员_高新技术(1)知识点
- 黑马程序员_高新技术(2)知识点
- 黑马程序员__JAVA高新技术--枚举及内省JavaBean、可变参数等知识点总结
- 黑马程序员--Java加强--高新技术
- 黑马程序员------java学习笔记之高新技术
- 黑马程序员_Java编程基础知识点小结
- 黑马程序员——高新技术---Java基础语法-循环结构和跳转语句
- 黑马程序员-------(高新技术)代理
- 黑马程序员-- 总结一些必要的理解的知识点
- 黑马程序员——高新技术——反射
- 黑马程序员-高新技术(反射机制)
- 黑马程序员--java高新技术之反射
- 黑马程序员---面向对象及工具类常用API知识点总结
- 黑马程序员--高新技术(枚举和反射)
- 黑马程序员_高新技术2
- 黑马程序员-JAVA 高新技术(反射)
- 黑马程序员-【强哥笔记】系列之Java高新技术笔记之IDE使用技巧(第1天).
- 黑马程序员---自学随堂笔记----String的一些知识点