------- android培训、java培训、期待与您交流! ----------
静态导入
普通import导入一个类或者是某个包中的所有类
Import static 静态导入
导入类下的一个静态方法
使用时就可以省略类名
Math.abs
导入import static java.lang.Math.max;
可以直接写abs();
可变参数
只能出现在参数列表的最后
......位于变量类型和变量名之间,前后有无空格都可以
调用可变参数方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数
Public static int add(int x,int ....args){
Int sum = x;
For(int 1 = 0;i<args.length;i++)
Sum = args[i];
Return sum;
}
Syso(add(1,2,3,4,5));
增强for
For(type 变量名:集合)
享元模式
很多小的对象有很多属性相同把他们变成一个对象
不同的属性变成方法的参数,
枚举
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则编译器就会报错,枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标
实现原理
每一个枚举都是一个对象
枚举定义构造方法
元素列表必须在方法之前
枚举的构造必须是私有的
反射
Class类大写的C
Java程序中的各个java类属于同一类事物,描述这类事物的java类名就是Class
得到类的字节码
类名.Class
对象.getClass()
Class.forName(“类名”)
反射就是把java类中的每个成分映射成相应的java类
Constructor类就是代表某个类中的一个构造方法
得到某个类中所有的构造方法
Constructor[] con = Class.forName(“”).gerConstructor
得到某一个构造方法
Constructor[] con = Class.forName(“”).gerConstructor(StringBuff.class);
创建实例对象
一般方式
String str = new String(new StringBuffer(“abs”));
反射方式
String str = (String)constructor.newInstance(new StringBuffer(“abc”));
Class.newInstance()方法
String obj = (String)Class.forName(“java.lang.String”).newInstance;
该方法内部先得到默认的构造方法,然后用该构造方法创建实例对象
成员变量的反射
Field类
获取成员变量的字节码
Field fieldy = 对象.getClass().getField(“要获取的变量名”);
获取成变量的值
fieldy.get(对象);
Method类
反射调用方法
Method methodCHartAt = String.class.getMethod(“charAt”,参数);
methodCHartAt .incoke(对象,参数);