------- android培训、java培训、期待与您交流! ----------
1,静态导入,即StaticImport
用法:
import static java.lang.Math.max;//导入某个类的一个叫max的静态方法
import static java.lang.Math.*;//导入每个类中的所有静态方法
2,可变参数//只能添加到参数末尾
用法;
public static int add(int ... x)//此处表示可以传入多个int值,但内部计算是整合成一个int[]
{ int num=0;
for(y=0;y<x.length;y++)//遍历整个数组
num+=x[y];
return num;
}
3,自动装箱与拆箱AutoBox
用法:
Integer x=8;//1.5以后才可以原来是Integer x=new Integer(8);
int z=x*6;//自动拆箱,Integer对象直接可以与基本数据进行运算;
4,享元模式:flyweight
用法:
String s="abc";//这里都知道字符窜其实是一个字符数组,即他的第一个指针指向'a',是基本数据,低于1个字节
String s1="abc";
//我们知道s==s1结果是true
Interger x=120;
Integer y=120;
//此时x==y,结果是true
Integer x=128;
Integer y=128;
//此时x==y结果就为false;
得出结论:在 都指向一个较小的数据时(低于一个字节是),系统默认就指向同一个Hash地址,进行数据共享,不再重新开辟空间,因为内存中这样的数据非常常见,数量也比较大,因此很大程度上节约了内存空间
5.高级for循环
用法:
int[] a={2,5,8,9,2,29,23,9};
for(int x:a)//格式for(基本数据类型或者对象(以存储的实际类型为主) x(引用名称) : 集合或数组的引用名称)
System.out.println(x);
总结:直接可以遍历已知长度的数组和集合之类的,大大提高效率;
6:枚举
java一些类中往往会出现好多不同对象并列存在的情况,并且相互之间还有关系
你不可能要一一获得,使用时还要大量的if和elsej进行判断,就像星期类,日期,还有存在很多对象的集合
枚举的方法就是,得到其中一个对象,你就能通过它们之间的关系枚举出所有的对象
普通的枚举就是:定义方法或者把对象封装成子类,就像星期,用第一个对象Monday,next第二个对象Tuesdar,再通过第二个对象next获得第三个对象Wednesday,或者封装成7个子类,这样下来数据量过大还是会造成一样的繁琐,
所以1.5以后出现了java的高级枚举Enum
如:
public class EnumText
{ public static void main(String[] args)
{// 每个枚举类中都有toString,equals,valueOf(String name),values()只列举比较常用的
weekday.valueOf("Sun");//得到Sun所代表的对象
weekday.values();//得到weekday中所有的对象并按顺序装成一个数组,
可以用高级for循环遍历,即:
weekday[] we= weekday.values();
for(weekday day:we)
System.out.println("今天是"+day);
//另外,enum类中只有一个元素时,也是当做单例的设计,因为enum类不允许外部创建对象,构造函数必须私有
class enum weekday//枚举类
{Sun,Mon,Tue,Wed,Thu,Fri,Sta;//默认是空参数的构造方法
}
}
7.反射//此不属于1.5新特性,只是利用可变参数等新特性加强了各种功能
反射就是把一个类中所有的元素都分别映射为不同的类;
比如构造函数映射为构造类,
方法映射为方法类,内含对java方法的描述.
各种常量映射为常量类;
数组,集合等分别映射成不同的类,
主要作用就是根据.class字解码文件,根据需求获取相应的数据,并对其进行操作,很多框架,反编译都要用到反射;