基本数据类型的装箱和拆箱
Integer iobj=3;//装箱 相当于编译器自动完成 Integer i=new Integer(3);
System.out.println(iobj+12);//拆箱 自动转化基本数据类型的过程
享元模式:就是有很多小的对象或方法,它们有很多相同的东西,那么我们就可以把相同的变成一个对象,并
将哪些不同的东西变成外部的属性,作为方法的参数输入。
枚举:关键字是enum,可以看着是特殊的class, 可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口,不能有public的构造函数,所有的方法都必须放在元素列表之后
但可以定义private的构造函数
注意的是:所有枚举值都是public , static , final的。
eg://含抽象法的枚举
public enum TrafficLamp{
RED(20){
public TrafficLamp nextLamp(){
return GREEN;
}
}
,
GREEN(20){
public TrafficLamp nextLamp(){
return YELLOW;
}
},
YELLOW(15){
public TrafficLamp nextLamp(){
return RED;
}
}
;
public abstract TrafficLamp nextLamp();
private int time;
private TrafficLamp(int time){this.time=time;};
}
--------------------------------------------------------------------------
语言里的动态:一般指程序运行时,容许改变程序结构或变量类型,这种语言称为动态语言
Reflection,意思是“反射、映像、倒影”,在Java中指的是我们可以在运行时加载、探知、使用编译期间完全未知的classes.
即:java程序可以加载运行一个运行时才得知名称的class,获悉其完整的构造,并生成其对象实体、或对其fields设值、
或唤起其methodsl.
反射的基石:Class类,用来表达Java程序运行时的classes和interfaces,也用来表达enum/array/private Java types(8个基本类)/关键词void。
当一个class被加载,或当加载器(class loader)的defineClass()被JVM调用,JVM便自动产生一个Class object.
java程序中的各个java类属于同一类事物,描述这类事物的java类名就是Class
字节码就是Class的实例对象
获得字节码的3种方法
pl.getClass();//pl指对象
Class.forName("类名")//做反射主要用这种
Class cls=Person.class//得到Person实例的字节码
Class cls1=字节码1;
Class cls2=字节码2;
数组类型的Class实例对象:Class.isArray():
总之:只要是在源程序中出现的类型,都有自己的Class实例对象。