Java高薪技术

来源:互联网 发布:p2p网络贷款平台排名 编辑:程序博客网 时间:2024/04/29 11:35
---------------------- android培训、java培训、期待与您交流! ----------------------


Java高薪技术

自动装箱与拆箱:原生数据类型转换成对应的对象类型,如Integer in1 = 54;

Integer有个缓冲池在-128~127之间,如

Integer in1 = 54, Integer in2 = 54, in1 == in2  true

Integer in1 = Integer.valueOf(54)Integer in2 = Integer.valueOf(54)in1 == in2也为true

Integer in1 = new Integer(54)Integer in2 = new Integer(54)in1 == in2 false

可变参数,如方法:void add(int... args)

此方法既可以接受数组,也可以接受单个int,也可以接受多个int

静态导入,导入某类的静态方法,可以直接使用它,

import static java.lang.Math.max;

在类中可以直接使用max方法了,不需要Math.max()引用了

枚举:定义的所有枚举类型,都是继承自Enum

所有的枚举变量都是枚举实例

枚举也可以有构造方法,构造方法有参数时,当用此构造方法声明枚举变量时,必须传入对应的参数

枚举有抽象方法时,枚举变量中必须实现此方法

用valueOf(String name)获得枚举变量时,枚举中必须有名为name的变量用来返回结果,不是用来声明新的变量

values()返回枚举中所有声明的变量的数组

name()类似于toString()


反射:涉及到类有Class,Constructor,Method,Field,利用反射可以在运行期动态的创建类的对象,反射是框架的基础

Class的实例代表类和接口,也代表数组类型,原生数据类型,及Void

Field代表类的变量

Method代表类的方法


同一类型和同样维度的数组共享同一Class对象


获得Class对象,有“类名.class”、Class.forName("类名")、对象的getClass()方法

通过Class对象可以获得类的似有变量和私有方法


注解:关键字@interface,注解各种属性类似于类的方法

@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.TYPE, ElementType.METHOD})public @interface ItcastAnnotation {String color() default "blue";String value();int[] arrayAttr();MyAnnotation myAnno() default @MyAnnotation(world="hello");Lamp lamp() default Lamp.S2N;}

color(),value()都为注解的属性,color默认值为"blue",注解有多个属性时,赋值时要指明变量。为数组属性赋值时,要用大括号括起来。

注解属性也可以为注解类型,也可以枚举类型


@Retention指明注解类型要保存多久,其中RetentionPolicy.RUNTIME保存在运行期,RetentionPolicy.CLASS保存在.class文件里,

RetentionPolicy.SOURCE保存在源文件里

@Target指明注解要修饰的类型


泛型:编译器所需要的,当生产字节码时,泛型已被擦除

泛型通配符<?>,适用于所有类型,基本类型除外

<? extends List>?所代表的类型必须继承了ist类,或者实现某个接口

<? super ArrayList>?所代表的类型必须为ArrayList的超类,或者为ArrayList已经继承的类或已经实现的接口


非泛型类的泛型方法,必须在返回值前,加上泛型占位符,如

public <T> void add(T t) {}


泛型类的静态方法涉及到泛型时,类的泛型与静态方法的泛型不一定为同一类型,如

public static <T> void add(T t) {}


类加载器:三种类型加载器AppClassLoader、ExtClassLoader、BootStrap,呈现一种树形关系,其中最底层的是AppClassLoader,

在加载类时,AppClassLoader先委托给ExtClassLoader,ExtClassLoader已经加载过此类时,返回该类的Class对象,

没有此类时,再委托给BootStrap,BootStrap已经加载过此类时,返回该类的Class对象,如果没有,

原路返回传递给AppClassLoader,由其去加载此类,这种委托机制,避免了类的重复加载。


自定义类加载器必须继承ClassLoader,且实现findClass()方法。传入findClass()的类名字,按照说明为binary name,

即应该带有包名。在findClass()中自定义加载字节码文件的方式,去特定文件夹取加载应去掉包名,前面加上文件夹名,

后面加上.class,用defineClass()返回Class对象。调用自定义类加载器时,应首先调用loadClass()方法,其也接受binary name,

这个方法会首先调用上一级类加载器,如果都没有加载到再调用自定义的findClass()方法,

去加载字节码文件。


框架模拟:编写一个类去读配置文件,配置文件中配置了键值对,类读取键对应的值,加载字节码文件,运行期动态生成相应类对象,

配置文件可随意更改。


 ---------------------- android培训、java培训、期待与您交流! ---------------------- 

详细请查看:http://edu.csdn.net/heima

原创粉丝点击