您的位置:首页 > 职场人生

黑马程序员__关于学习Java基础加强的总结_2

2013-05-31 19:25 621 查看
              -------
android培训java培训、期待与您交流!
----------

 

JavaBean 是一种特殊的Java类,这种Java类中的方法主要是用于访问私有的字段,切方法名符合某种命名规则

注解:

    给Java编译器传递一种信息,表示对某个方法,字段或类对外给出的标记信息!

    例如:过时注解  @Deprecated  表示已过时  

          覆盖注解  @Override 对父类方法的覆盖

          忽略警告注解 @SuppressWarming 忽略某个警告

泛型:

    泛型是提供给java编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带参数说明的集合时会除掉“类型”信息,使程序运行效率不受影响,对于参数化的泛型类型,getClass()的方法的返回值和原始类型完全一样。由于编译生成的字节码会去掉泛型的类型信息,只要能跳过编译器,就可以在某个泛型中加入其它类型的数据

例如:用反射得到集合,再调用其add方法即可。

参数化类型与原始类型的兼容性:

    参数化类型可以引用一个原始类型的对象,编译报告警告,例如:

    Collection<String> c = new Vector();

    原始类型可以引用一个参数化类型的对象,编译报告警告,例如:

    Collection c = new Vector<String>();

参数化类型不考虑类型参数的继承关系

     Vector<String> v = new Vector<Object>();这样是错误的!

在创建数组实例时,数组元素不能使用参数化的类型!

泛型中的?通配符

    ?表示任意类型

Java的泛型集合类:

   

HashMap<String,Integer> hm = new HashMap<String,Integer>();
hm.put("aaa",1);
hm.put("bbb",2);
Set<Map.Entry<String,Integer>> mes = hm.entrySet();
for(Map.Entry<String,Integer> me:mes){
System.out.println(me.getKey()+":"+me.getValue());
}


注意:只用引用类型才能作为泛型的参数

     

类型参数的类型推断:

    1,当某个类型变量只在整个参数列表中的所有参数和返回值中的一处被应用了,那么根据调用方法时该处的实际应用参数来确定

    2,当某个类型变量在整个参数列表中的所有参数和返回值中的多处被应用了,如果调用方法时这多处的实际应用类型都对应一种类型来确定

    3.当某个类型变量在整个参数列表中的所有参数和返回值中的多处被应用了,如果调用方法时这多处的实际应用类型对应了不同的类型,且没有使用返回值,这时取多个参数中的最大交集类型

    4,.当某个类型变量在整个参数列表中的所有参数和返回值中的多处被应用了,如果调用方法时这多处的实际应用类型对应了不同的类型,且使用返回值,这时候优先考虑返回值的类型!

    5,参数类型推断具有传递性,下面第一种情况推断实际参数类型为Object,编译没有问题,而第二种情况则根据参数化的Vector类实例将类型变量直接确定为String类型,编译会出问题。

 

类加载器:

   

    Java虚拟机中有多个类加载器,系统默认三个主要类加载器:BootStrap,ExtClassLoader,AppClassLoader

    类加载器也是Java类,类加载器本身也要被加载器加载,必须有第一个类加载器不是java类,这正是BootStrap。

    Java虚拟机中的所有类加载器具有父子关系的树形结构进行组织,在实例化每个类加载器对象时,需要为其指定一个父级类加载器对象或者默认采用系统加载器为其父级类加载。

类加载器的委托机制:

    首先是当前线程的类加载器加载,如果类A中引用了类B,Java虚拟机将使用加载类A的加载器去加载类B,还可以直接调用ClassLoader.loadClass()方法来指定某个类加载器去加载某个类。

    某个类加载器加载类时,又先委托其上级加载器来加载。

 

 

 

 

 

 

 

 

 

 

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: