Java高级特性学习笔记


基本数据类型的装箱和拆箱

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实例对象。

相关内容