黑马程序员__基础加强

---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------

java基础加强
工具:
     编译器版本要比JRE版本低,否则就会在运行是出现错误的版本号问题。

静态导入:
    原来的import是导入一个包中的类,import static pageagename.classname.methodname;
    而静态导入是导入一个包中的类中的某个静态方法。
    是用此方法时和使用自己的static方法一样。直接使用。

可变参数 
 可变参数:可变参数本质上就是一个数组,对于某个声明了可变参数的方法来说,我们既可以传递离散的值,也可以传递数组对象。但如果将方法中的参数定义为数组,那么只能传递数组对象而不能传递离散的值。可变参数必须要作为方法参数的最后一个参数。...位于变量类型和变量名之间,前后有无空格都可以;
增强的for循环
 增强的for循环与传统的for循环相比写起来更简洁,更容易理解,但是他也有一个缺点:他失去了数组或者集合的索引信息,如果要对数组或集合里指定位置上的元素进行操作,建议使用传统的for循环,如果只是遍历集合或数组里面的每一个元素,建议采用增强型的for循环。迭代变量须实现iterable接口。

基本数据的自动拆装箱与享元设计模式:
    将基本数据类型自动转换包装成相应类的对象,装箱,反之为拆箱。
    享元设计模式(flyweight):对象很小,经常用,为了共用
    Integer i1=13;Integer i2=13;   i1=i2(ture)
    Integer i1=137;Integer i2=137;   i1=i2(false)
    只能在一个字节范围内;

枚举:
    枚举就是声明变量只能在指定内容中的值,不能自定义。内部就是单例的表现。
    枚举是类,只不过有点特殊罢了,其中的每个元素都是该类的一个实例对象。
    定义枚举时要定义在最前,大写。
    带有构造方法的枚举:
        类中元素列表必须在最前面写,构造方法必须是私有的,可以在枚举元素后加()来区别该对象调用哪个构造方法。
    带有抽象方法的枚举:
        每个元素分别是由枚举类的子类来生成的实例对象,这些子类采用类似内部类的方式进行定义。

反射:
    反射就是把Java类中的各种成分映射成相应的java类。也就是编程剖析某个类。
    Class字节码文件类。
    如何得到某个class文件对应的class对象。类名.class,对象.getClass(),Class.forName(“类名”)
    
    Java类中的各种成分:Constructor,Field,Method
    要得到相应的类对象,有相应的get方法。
    想的到private的方法等,暴力反射。:
    c.setAccessible(true);


ArrayList_HashSet的比较及Hashcode分析:
    hash算法存储的数据在查找上效率有很大的提高,它把查找的范围缩小。
    arraylist采用顺序存储对象,可以按照位置来操作已存的对象,可存储相同对象。
    若不重写hashcode方法,HashSet不能存储相同对象。

了解和入门注解:
     当加上重写某个方法时加上注解,若方法名写错就会报错。这只是它的一个小小的应用。
     注解相当于一种标记,加了注解就等于打上了某种标记,javac编译器,开发工具和其他程序可以用反射的来了解加了注解的类及各种元素,并做相应的事情。
      注解可以加在包,类,字段,方法,参数,及局部变量上。
      查看java.lang包,可以看到JDK中提供的基本的annotation。
      @Retention注解的三种取值:
           RetetionPolicy.SOUYCE  对应  java源文件
           RetetionPolicy.CLASS   对应  class文件
           RetetionPolicy.RUNTIME 对应  内存中的字节码
      可以为注解增加各种属性,属性可以使数组类型,枚举类型,也可以是注解类型。

泛型:
      一个集合能够装任何对象,类型不同也可。但是从集合中拿出数据时就不知道拿出来的是什么类型
      在强转时,这样不可避免就会引发程序的一些安全性问题。
      当我们存时就只存一种类型时,就可以不会出现这种情况。
      生成class文件中将不再带有泛形信息,以此使程序运行效率不受到影响,这个过程称之为“擦除”。
      限定通配符的上边界:
      正确:Vector<? extends Number> x = new Vector<Integer>();
      错误:Vector<? extends Number> x = new Vector<String>();
      限定通配符的下边界:
 正确:Vector<? super Integer> x = new Vector<Number>();
 错误:Vector<? super Integer> x = new Vector<Byte>();

类加载器:
      java虚拟机中可以安装多个加载器,系统默认的三个主要类加载器,每个类负责加载特定位置的类:
      BootStrap—————JRE/lib/rt.jar   例如:System
      ExtClassLoader————JRE/Lib/ext/*.jar    可扩展的
      AppClassLoader————CLASSPATH指定的所有jar或目录

      自己写类加的类载器要实现ClassLoader,
 类加载的委托机制:
      加载的优先级:类加载的委托机制先交给上级,没有加载到就返回自己加载及返回发起者和没有找到就有异常。findClass(),loadClass()。


APO:
     面向方面编程。是面向对象编程的一种补充。系统中存在交叉业务,一个交叉业务就是要切入到系统中的一个方面,即为AOP。AOP主要应用于日志记录,性能统计,安全控制,事务处理等方面。
     AOP的目标就是要使交叉业务模块化,可以采用将切面代码移动到原始方法的周围,这与直接在方法中编写切面代码的运行效果相同。
     代理技术可以很好的解决这种问题,是实现AOP功能的核心和关键技术。

---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值