------- android培训、java培训、期待与您交流! ----------
gss
1.静态导入
静态导入是jdk1.5版本以后出现的新特性,一般是指导入静态方法,如:import static java.lang.System.out 是指导入系统输出的静态方法。
例:
import static java.lang.System.out //导入java.lang包下的System类的静态方法out
public class StaticImport {
public static void main(String[] args) {
int x=1;
x++;
out.println(x); //导入java.lang包下的System类的静态方法out后,可以写成out.println(x);来打印数据x,不必写全System.out.println(x);
}
}
2.可变参数
一个方法接受的参数个数不固定如:
System.out.println(add(3,4,5)),
System.out.println(add(1,2,3,4,5)),
可变参数的特点:
只能出现在参数列表最后;
... 位于参数类型和参数名之间前后有无空格都可以
调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法中以数组形式访问参数。
例:
public class VarableParameter {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(add(2,3));
System.out.println(add(2,3,5));
}
public static int add(int x,int ... args){ //可变参数创建格式
int sum=x;
for (int i=0;i<args.length;i++){
sum+=args[i];
}
return sum;
}
}
3.增强for循环
语法:for(type 变量名 :集合变量名)
注意事项:
迭代变量必须在()中定义
集合变量可以是数组或实现了iterable接口的集合类
例:
public class VarableParameter {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(add(2,3));
System.out.println(add(2,3,5));
}
public static int add(int x,int ... args){ //可变参数创建格式
int sum=x;
for (int arg :args){
sum+=arg;
}
return sum;
}
}
4.基本数据类型的拆箱与装箱
自动装箱:
Integer num1 = 12;
自动拆箱:
System.out.println(num1 + 2);
例:
public class AutoBox {
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer iObj = 3;
System.out.println(iObj + 12);
}
}
5.枚举
枚举是要让某个类型的变量的取之只能为若干个固定的值中的一个,否则编译器就会报错,枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一功能。
用普通类如何实现枚举功能,定义一个Weekday的类来模拟枚举功能
私有构造方法;每个元素分别用一个共有的静态成员变量表示;可以有若干构造方法或抽象方法,要提供NextDay()是抽象的。
例:
package cn.itcast.day1;
public abstract class WeekDay1 {
private WeekDay1(){}
public final static WeekDay1 SUN= new WeekDay1(){
@Override
public WeekDay1 nextDay() {
// TODO Auto-generated method stub
return MON;
}
};
public final static WeekDay1 MON= new WeekDay1(){
@Override
public WeekDay1 nextDay() {
// TODO Auto-generated method stub
return SUN;
}
};
public abstract WeekDay1 nextDay();
/* public WeekDay nextDay(){
if(this == SUN){
return MON;
}else{
return SUN;
}
}*/
public String toString(){
return this == SUN?"SUN":"MON";
}
}
package cn.itcast.day1;
public class EnumTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
WeekDay1 weekDay = WeekDay1.MON;
System.out.println(weekDay.nextDay());
WeekDay weekDay2 = WeekDay.FRI;
System.out.println(weekDay2);
}
public enum WeekDay{
SUN,MON,TUE,WED,THI,FRI,SAT
}
//交通灯枚举类
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;
}
}
}
6.反射
Class 反射的基石
如何得到各个字节码对应的实例对象?
类名.class,例如:System.class ;对象.getClass() 例如:new Date().getClass ; Class.forName("类名") 例如:Class.forName("java.util.Date");
反射就是把Java类中的各种成分映射成相应的Java类。例如一个Java类中用一个Class类的对象来表示,一个类中的组成部分:成员变量,方法,构造方法,包等信息也用一个个Java类来表示就像汽车是一个类,汽车的发动机,变速箱也是一个个的类。表示Java类的Class类显然要提供一系列的方法,来获得其中的变量,方法,构造方法,修饰符,包等信息,这些信息就是用相应类的实例对象来表示,他们是Field、Method、Contructor、Package等等。