黑马程序员——高新技术

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ---------------------

 

一.java5的静态导入


1.import与import static语句的区别:

   import语句可以导入一个类或某个包中的所有类

   import static 语句导入一个类中的某个静态方法或所有静态方法。


例:

import  java.lang.*   一般的是导入一个包中的类。

import  static  java.lang.Math. max;  导入Math类中的max静态方法。

import static java.lang.Math.*; 导入Math类中的所有静态方法。



二.可变参数Varibleparameter

1.可变参数

  1)问题:一个方法接受的参数个数不固定,例如:

   System.out.println(add(2,3,5));

   System.out.println(add(1,2,3,5));

  2)可变参数的特点:

  <1>只能出现在参数列表的最后;

  <2>...位于变量类型和变量名之间,前后有无空格都可以;

  <3>调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,

     在方法体中以数组的形式访问可变参数。


三.java5的增强for循环


1.增强for循环

  1)语法:for(type 变量名:集合变量名){...}

  2)注意事项:

   迭代变量必须在()中定义!

   集合变量可以是数组或实现了Iterable接口的集合类。

  3)举例:

  public static int add(int x,int ... args)

  {

   int sum = x;

   for(int arg : args)

   {

    sum += arg;

   }

   return sum;

  }

 

四.Class类

1.反射的基石:Class类
  1)java程序中的各个java类属于同一类事物,描述这类事物的java类名就是Class.
  2)对比提问:众多的人用一个什么类表示?众多的java类用一个什么类表示?
       人-->Person
       Java类-->Class
 3)对比提问:Person类代表人,它的实例对象就是张三,李四这样一个个具体的人,Class
      类代表Java类,它的各个实例对象又分别对应什么呢?
  <1>对应各个类在内存中的字节码,例如:Person类的字节码,ArrayList类的字节码,等等。
  <2>一个类被类加载器加载到内存中,占用一片存储空间,这个空间里面的内容就是类的字节码,
  <3>不同的类的字节码是不同的,所以它们在内存中的内容是不同的,这一个个空间可分别用一个个
   的对象来表示,这些对象显然具有相同的类型,这个类型是什么呢?
4)如何得到各个字节码对应的实例对象(Class类型)
  <1>类名.class,例如:System.class
  <2>对象.getClass(),例如:new Date().getClass()
  <3>Class.forName("类名"),例如:Class.forName("java.util.Date")//查询或加载
 2.class与Class的区别:
  class是指java类,java类用于描述一类事物的共性,该类事物有什么属性,没有什么属性,

  至于这个属性的值是什么,则由这个类的实例对象来确定,不同的实例对象有不同的属性值。
  java程序中的各个类,也属于同一类事物,Class类是用来描述java程序中的各个java类这一事物的,

  Class类描  述了类的名字,类的访问属性,类所属的包名,字段名称的列表,方法名称的列表等等。
 3.Class.forName("java.lang.String");中forName()的作用:
   返回字节码。有两种方式:第一,字节码已加载过。第二,字节码未被加载过,在java虚拟机中还不存在,
   则用类加载器去加载,然后缓存到虚拟机中,以后就不用再加载了。

五.反射概念 


   反射就是把Java类中的各种成分映射成相应的java类。例如,一个java类可用一个Class类的对象来
   表示,一个类中的组成部分有:成员变量,方法,构造方法,包等等信息也可用一个个的java类来
   表示,就像汽车是一个类,汽车中的发动机,变速箱等等也是一个个类。表示java类的Class类显然
   要提供一系列的方法,来获得其中的变量,方法,构造方法,修饰符,包等信息,这些信息就是用
   相应类的实例对象来表示,它们是Field,Method,Contructor,Package等等。
   一个类中的每个成员都可以用相应的反射API类的一个实例对象来表示,通过调用Class类的方法
   可以得到这些实例对象。然后再使用这些对象。

六.JavaBean

1.内省:英文是Intorspector ,它主要用于对JavaBean进行操作。
2.JavaBean:
1)JavaBean是一种特殊的java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有的
  字段,且方法名符合某种命名规则。
2)如果要在两个模块之间传递多个信息,可以将这些信息封装到一个JavaBean中,这种JavaBean的实例对象
     通常称之为值对象(Value Object,简称VO)。这些信息在类中用私有字段来存储,用set()和get()
  方法来设置和获取。
 3)通过提供的set和get方法就知道属性名,一个类被当作JavaBean使用时,JavaBean的属性是根据方法名
  推断出来的,它根本看不到java类内部的成员变量。如果第二个字母是小写的,则把第一个字母变成小写的。
4)符合JavaBean特点的类可以当做一个JavaBean来使用,比普通类操作更方便,快捷。

七.注解Annotation


1.注解的定义和作用
   1)注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记。java编译器,开发工具,
  和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应
  的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。
   2)一个注解就是一个类,使用一个注解就相当于创建了一个注解类的实例对象。

2.java提供的几个基本注解
  1)@SuppressWarnings压制警告注解
   使提示不再出现。如:@SuppressWarnings("deprecation")//不再提示过时
  2)@Deprecated使过时注解
   标识某个方法或类等已过时,以告诉新人以后尽量不要再使用该方法,同时又 不会影响以前的老程序。
  3)@Override覆盖注解
   在子类覆盖父类方法时,将非法的覆盖标识出来(或使不正确的覆盖报错),以便修正。

3.注解的应用结构图
  注解类
  @interface A
  {
  }

  应用了"注解类"的类
  @A
  class B
  {
  }

  对"应用了注解类的类"进行反射操作的类
  class C
  {
   B.class.isAnnotionPresent(A.class);
   A a = B.class.getAnnotion(A.class);

  }

 

八.类加载器


  1.类加载器
  1)类加载器及其作用:
  字节码的原始信息存放在硬盘上的classpath指定的目录下,java程序用到某个类,虚拟机要先
  将该类的字节码加载到内存里,进行处理后得到的就是字节码。实现这个过程的机制就是类加载器,
  其作用就是加载类。
  2)类加载器BootStrap
  类加载器也是java类,因为其他是java类的类加载器本身也要被类加载器加载,显然必须有
  第一个不是java类的类加载器,它就是BootStrap.
  BootStrp是JVM里的第一个类加载器,它不是java类,不需要被加载,它是嵌套在JVM内核里的,
  它是用C++写的二进制代码。
  3)java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定
  位置的类:
  1)类加载器及其作用:
  字节码的原始信息存放在硬盘上的classpath指定的目录下,java程序用到某个类,虚拟机要先
  将该类的字节码加载到内存里,进行处理后得到的就是字节码。实现这个过程的机制就是类加载器,
  其作用就是加载类。
  2)类加载器BootStrap
  类加载器也是java类,因为其他是java类的类加载器本身也要被类加载器加载,显然必须有
  第一个不是java类的类加载器,它就是BootStrap.
  BootStrp是JVM里的第一个类加载器,它不是java类,不需要被加载,它是嵌套在JVM内核里的,
  它是用C++写的二进制代码。
  3)java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定
  位置的类:

    BootStrap,ExtClassLoader,AppClassLoader

 

----------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值