---------------------- <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>、期待与您交流! ----------------------