day9 JDK 新特性--注解、新 for 循环、静态导入、自动装箱拆箱、泛型、可变长参数

来源:互联网 发布:小说无敌淘宝王 编辑:程序博客网 时间:2024/05/21 06:51

目标
    JDK 新特性--注解、新 for 循环、
    静态导入、自动装箱拆箱、泛型、可变长参数
 了解 Java 反射的原理
    掌握 Java 反射的核心类 Class
    掌握 Java 反射的其他几个类

1、JDK 新特性--注解、新 for 循环、
    静态导入、自动装箱拆箱、泛型、可变长参数
 注解:最早出现在 JavaDoc 注释中的一个标记符号。
       @param  后面写的是方法参数
    @return 后面写的是方法的返回值
    当调用 javadoc 命令的时候,JVM 要解析这些
    标记,根据这些标记生成 html 格式的帮助文档
   
    人们利用 JVM 解析这些符号,符号又有特殊的
含义,能够明确规定一些格式相关的信息。可以在注释外面使用
         java.lang.annotation   
   @Override      对应有 java 类
   @Test         import org.junit.Test;
   
   注解的作用:明确所写的方法、类具体的功能。

user表----------->User.hbm.xml<-----------User类
user表----------------------------------->User类

@Entity
class User{}
      
    新 for 循环:
 老 for 循环组成:循环初始值、循环终止值、循环增长量、
  循环体(当前循环取出的临时变量)
  String[] arr={"aa","bb","cc"};
  for(int i=0;i<arr.length;i++){
  String temp = arr[i];
  System.out.println(temp);
  }
  
  for(String temp:arr)
     {
  System.out.println(temp);
  } 
 
 
 静态导入:在类开头导入一些静态的类可以使用如下方法
 import java.util.List;
 import static java.lang.System.out;
 //out 属性是静态的不需要 new,静态的内容可以在
类的开头直接声明导入
  
    可变长参数
 公交车售票员算总票价:
     public int getSum(int num1,int num2,int... num3){
  int sun = 0;
  sun = num1+num2;
  //num3... 变长参数在方法内使用是看做数组
  //int[] num3
  for(int temp:num3)
  {
   sun+=temp;
  }
  
  }
   (1)变长参数只能作为最后一个参数;
   (2)变长参数在方法内作为数组使用;
   (3)变长参数可以用集合对象替换。
  
  
 泛型:是为了方便使用 集合 而创建的一种方法。解决
使用集合对象类型转换的问题。
    所有放入集合中的数据,一视同仁全部转化为 Object 类型
能够方便存储、查询等操作。但是取出时需要再转化回原来的类型
    又借鉴了数组的特点,使用泛型来复古。强制要求集合
中只能存放一种类型的数据。
    在定义集合对象、传参时完成此操作。
 语法
 Connection<类型> list = new ArrayList<类型>();
 list.add(同类型对象);
 
 Map<String,Student> map = new HashMap<String,Student>();
 
2、了解 Java 反射的原理
   人可以自我反省、程序也可以。通过很小的一些关键信息,
反向推导出其他信息。
   在 Java 程序中需要知道关键信息:
   (1)完整的包名类名;
   (2)已经创建的对象;  
   通过一些手段,方法 ,反向推导出类的详细信息。
  
   人去医院检查,检查什么?
   检查人体各个器官是否正常。内脏、五官、四肢、神经
  
   先明确一个 Java 类中包含什么??
   类、属性、方法、构造方法、
   java.lang.Class
   java.lang.reflect.Field
   java.lang.reflect.Method
   java.lang.reflect.Constructor
   java.lang.reflect.Array
  
   package 包名;
   class 类名{
  private 类型 属性名;
  
  //无参构造
  public 类名(){}
  
  //有参构造
  public 类名(类型 参数名){}
  
  //方法
  public 返回值类型 方法名(参数列表){方法体}
   }
  

3、 掌握 Java 反射的核心类 Class
   java.lang.Class  代表所有类的类,当  JVM 加载任意一个类
时,会自动生成一个该类的 Class 对象。

   Object
    Class  getClass(); 得到一个对象的 Class 对象。
 
 安博员工 liu= new 安博员工(“刘立立”);
 Class c = liu.getClass();
 
 //安博公司档案库新增一个员工记录,员工编号。
 JVM公司员工
 Student student = new Student();//student 对象加入JVM 公司
 //JVM 公司自动为该员工生成一个档案
 //得到该档案对象 方法一,通过对象得到
 Class c = student.getClass();
 //得到该档案对象 方法二,通过类名得到
 Class c = Student.class;
 //得到该档案对象 方法三,通过类加载器
 Class.forName("包名.类名");
 
 Class 类是 Java 反射的起点,必须先得到 Class ,才能继续
下面的反射操作。
 
 作用:
 通过 Class 对象,可以得到一个对象
  c2.newInstance();//调用无参的构造生成对象。
 
 
4、掌握 Java 反射的其他几个类
 
 java.lang.reflect.Field
   java.lang.reflect.Method
   java.lang.reflect.Constructor
   java.lang.reflect.Array