---------------------- android培训、java培训、期待与您交流! ----------------------
黑马程序员-高新技术知识1
静态导入:静态导入是jdk 1.5以后提供的一种导入方法
如:import static java.lang.Math.*;
重载与重写的区别。
overLoad:重载,两个方法的返回值和方法名字相同,参数列表不同,
override:重写,及覆盖,返回值类型,方法名字,参数列表相同,若父类方法被私有化则不能覆盖。
可变参数:show(int a ,int... b)
1.只能出现在参数列表的最后。
2....位于变量类型和变量名之间,最后有无空格都可以。
3.调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数,在jdk 1.4以前用show( int a,Object[] b)表示。
增强for循环,for(type类型 变量名 :集合或数组变量名){....};
使用for循环需要注意的是;
1.迭代变量必须在()中定义。
2.集合变量可以是数组,或实现了Iterable接口的集合类。
基本数据类型对象包装类
因为集合中无法存放基本数据类型的对象,所以提供了基本数据类型对象包装类,
基本数据类行对象包装类的最长用的作用是用于基本数据类型和字符串类型间作转换。
1.基本数据类型专函为字符串
1.基本数据类型+"",加上一个空字符。
2.基本数据类型.toString(基本数据类型值);
2.字符串转化为基本数据类型
xxx a=Xxx.parseXxx(String);静态转换
如:double a=Double.parseDouble(String);
blloean b=Boolean.parseBoolean("true");
基本数据类型在1.5以后出现新特性
可以用Integer x=4;代替 Integer x=new Integer(4);创建对象,将进行自动装箱
x=x+2;x将进行自动拆箱,变成int类型和2进行相加运算,再将和进行装箱赋值给x。
在新特性中,如果两个Integer类型的对象数值相同,且数值范围在byte(-128-127)之间,就不会再在内存中创建新的对象,两个Integer对象将使用同一个数据地址。所以用==进行判断值为true。这种特性叫做享元模式,flyweight。
枚举
可以用 enum 关键字定义一个枚举。
为什么要有枚举
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错,枚举可以让编译器在编译时期就可以控制源程序中的非法值,普通变量的方式在开发阶段无法实现这个目标。
用普通的类实现枚举的功能
1.私有的构造方法
2.每个元素分别用一个共有的静态成员表示,
3.可以有若干个共有的方法或抽象方法,采用抽象方法定义nextDay,就是将大量的if else 语句转移为一个个独立的类,
public abstract class WeekDay{
private WeekDay(){};
public final static WeekDay Sun=new WeekDay(){
public WeekDay nextDay(){
return Mon;
}
}
public abstract WeekDay nextDay();
sop(WeekDay.nextDay());
public enum WeekDay{
//定义一个枚举,元素列表位于所有成分之前。
SUN,MON,TUE,WED,THI,FRL,SAT
private WeekDay(){}
private WeekDay(int a){}
//若变量用MON(1),带一个参数,可以使用各不同的构造方法。
}
}
交通灯枚举
1.枚举就是相当于一个类,其中亦可以定义构造方法,成员变量,普通方法,抽象方法。
2.枚举元素必须位于枚举体中最开始的部分,枚举元素列表后面要有分号,与其他成分分隔,如果把其他成员放在枚举元素的前面,编译时会出错。
构造方法:
1.构造方法必须定义为私有
2.如果有多个构造方法,根据构造方法的参数个数进行选择。
3.枚举元素MON与MON()的效果一样,都掉用默认构造方法。
枚举方法
1.定义一个枚举
2.实现普通方法。
3.实现抽象的方法,每个元素分别是由枚举类的子类来生成的实例对象,这些子类采用类似内部类的方式进行定义。
4.增加表示时间的构造方法。
若枚举只有一个成员时,就可以采用单例的实现方式。
public enum TrafficLamp{
RED(30){
public TrafficLamp nextLamp(){
return GREEN;
}
}
GREEN(45){
public TrafficLamp nextLamp(){
return YELLOW;
}
},
YELLOW(5){
public TrafficLamp nextLamp(){
return RED;
}
};
public abstract TrafficLamp nextLamp();
private int time;
private TrafficLamp(int time){
this.time=time;
}
}