一、静态导入:
import static语句导入一个类中的某个静态方法或所有方法;
例子:
1.import static java.lang.Math.max;
只是导入了Math类中的max方法,这是只能max方法可以省略Math;
//System.out.println(Math.max(3, 6));
System.out.println(max(3, 6));
System.out.println(Math.abs(3 - 6));
2.import static java.lang.Math.*;
导入Math类中所有的静态方法;这是调用Math的静态方法都可以省略类名;
System.out.println(max(3, 6));
System.out.println(abs(3 - 6));
二、可变参数:
特点:
1.只能出现在参数列表的最后;
2....位于变量类型和变量名之间,前后有无空格都可以;
3.调用可变参数的方法时,编译器为该可变参数隐含创建数组,在方法体中以数组的形式访问可变参数;
例子:
public class VariableParameter {
public static void main(String[] args) {
System.out.println(add(2,3));
System.out.println(add(2,5,6));
}
public static int add(int x,int... args)
{
int sum = x;
//增强for循环
for(int arg : args) //迭代出每一个元素值;
{
sum += arg;
}
return sum;
}
}
三、增强for循环
1.语法:
for(type 变量名 : 集合变量名){}
2.注意事项:
迭代变量必须在()中定义;
集合变量可以是数组或实现了Iterable接口的集合类
例子:
public static int add(int x,int... args)
{
int sum = x;
//增强for循环
for(int arg : args) //迭代出每一个元素值;
{
sum += arg;
}
return sum;
}
四、基本数据的自动装箱拆箱
1.自动装箱:
Integer num = 12;
2.自动拆箱
System.out.pritnln(num + 12);
3.享元模式:
Integer a1 = 12;
Integer a2 = 12;
System.out.println(a1 == a2); //true
五、枚举:
1.枚举就是要让某个类型的变量的取值只能为若干个固定值的一个;
2.在枚举类中定义其他功能或构造方法,应该放在枚举元素列表之后。
3.枚举中元素就是这个枚举类的实例对象,如果调用相应的构造函数,
就在元素后加括号,传递相应的参数;
4.枚举中构造函数,必须私有;
例子:
public class EnumTest {
/**
* @param args
*/
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);
System.out.println(weekDay2.name());
//打印顺序
System.out.println(weekDay2.ordinal());
//将前台传递过来的值,转换成枚举类
System.out.println(WeekDay.valueOf("SUN").toString());
/ /将枚举类中的元素,转换成数组;
System.out.println(WeekDay.values().length);
}
public enum WeekDay
{
SUN(0),MON(),TUE,WED,THI,FRI(5),SAT;
private WeekDay()
{
System.out.println("first");
}
private WeekDay(int Day)
{
System.out.println("second");
}
}
}
六、反射:
反射的基石:Class类;
反射就是把java类中的各种成分映射成相应的java类:
一》得到各个字节码对应的实例对象(Class类型)三种方法
1.类名.class;如:System.class;
2.对象.getClass();如:new Date().getClass();前提必须由对象名;
3.Class.forName(“类名”);如;Class.forName(“java.util.Date”);
1.构造函数的反射:
得到某个类的所有构造函数:
Constructor[] constructors = Class.forName(“java.lang.String”).getConstructors();
2.成员变量的反射:
ReflectPoint pt1 = new ReflectPoint(3,5);
Field fieldY = pt1.getClass().getField("y");
System.out.println(fieldY);
System.out.println(fieldY.get(pt1));
3.成员方法的反射:
一》反射成员方法格式:
Method method = String.Class.getMetho