基礎加強學習總結

来源:互联网 发布:java 读取excel jar包 编辑:程序博客网 时间:2024/06/01 09:41

|--基础加强
    |--Eclipse的使用技巧
        |--集成开发环境(IDE(Integrated Development Environment))
        |--高版本的java可以运行低版本的javac编译的程序
        |--低版本的java不可以运行搞版本的javac编译的程序
    |--JDK1.5版本新特性
        |--静态导入
            |--imprt语句可以导入一个类或某个包中的所有类
            |--import static语句导入一个类中的某个静态方法或所有静态方法
        |--可变参数(Variable Parameter)
            |--只能出现在参数列表的最后
            |--...位于变量类型和变量名之间,前后有无空格均可
            |--调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组形式访问可变参数
        |--foreach
            |--语法
                |--for((修饰符) type 变量名 : 集合变量名){...}
            |--注意
                |--迭代变量必须在()中定义
                |--集合变量可以是数组或事项了Iterable接口的集合类
        |--基本数据类型自动装/拆箱
            |--享元模式(FlyWeight)
                |--被包装的数据对象范围被定义在一个字节(-128~127)之内,自动装箱时会被自动缓存为一个对象,以备进行共享使用
                |--许多相同属性(内部状态)且很小的对象被抽取后定义为一个对象,不同的属性被定义为参数(外部状态)
        |--枚举(Enum)
            |--定义
                |--是一个特殊的类,其中的每个元素都是该类的一个实例对象
                |--相当于一个类,其中可以定义构造方法,成员变量,普通方法和抽象方法
                |--使某个类型的变量的取值只能为若干个固定值中的一个,否则编译器报错
                |--使编译器在编译时可以控制源程序中所填写的非法值,普通变量的方式在开发阶段无法时限这一目标
            |--用法
                |--构造函数私有化
                |--每个元素分别使用一个共有的静态成员变量表示
                |--可以使用若干共有方法或抽象方法
                    |--采用抽象方法可以将大量的if else语句转换为一个个独立的类
                |--枚举类中只有元素列表内容时,元素列表后的";"可以省略
                |--每局类中的元素必须置于枚举类中的头部
                |--在枚举元素后加上"(空/参数)({})",表示创建    这个元素实例对象时所使用的构造方法,默认为无参构造方法
                |--枚举类中只有一个元素时,可以作为单例设计模式来使用
            |--方法摘要
                |--抛出CloneNotSupportedException
                    |--protected Object clone();
                |--比较此枚举与指定对象的顺序
                    |--int compareTo(E obj);
                |--当指定对象等于此枚举常量时,返回true
                    |--boolean equals(Object other);
                |--枚举类不能有finalize方法
                    |--protected void finalize();
                |--返回与此枚举常量的枚举类型相对应的Class对象
                    |--Class<E> getDeclaringClass();
                |--返回此枚举量的哈希码
                    |--int hashCode();
                |--返回此枚举量的名称,在其枚举声明中对其进行声明
                    |--String name();
                |--返回此枚举量的序数(它在枚举声明中的位置,其中初始常量序数为0)
                    |--int ordinal();
                |--返回枚举常量的名称,它包含在声明中
                    |--String toString();
                |--返回带指定名称的指定枚举类型的枚举常量
                    |--static<T extends Enum<T>> T valueOf(Class<T> enumType,String name);
        |--反射(非JDK1.5新特性)
            |--定义
                |--是把Java类中的各种成分映射成相应的Java类
            |--作用
                |--实现框架功能
        |--JavaBean内省
            |--定义
                |--一种特殊的Java类,主要用于传递数据信息,这种Java类中的方法主要用于访问私有字段,且方法名符合某种命名规则
                |--一个类被当作JavaBean使用时,JavaBean的属性是根据方法名推断出来的,它无法看到Java类内部的成员变量
        |--Beanutils工具包
        |--注释(Annotation)
            |--定义
                |--相当于一种标记,Java编译器和其他程序可以李勇反射来了解类及各种元素上有无标记,通过标记做出相应的操作
                |--可以加在包,类,字段,方法,参数以及局部变量上
            |--Annotation Type
                |--Retention
                    |--RetentionPolicy(Enum)
                        |--CLASS
                            |--编译器将把注释记录在类文件中,但在运行时VM不需要保留注释
                        |--RUNTIME
                            |--编译器将把注释记录在类文件中,在运行时VM将保留注释,因此可以反射性地读取
                        |--SOURCE
                            |--编译器要丢弃的注释
                |--Target
                    |--ElementType(Enum)
                        |--ANNOTATION_TYPE
                            |--注释类型声明
                        |--CONSTRUCTOR
                            |--构造方法声明
                        |--FIELD
                            |--字段声明(包括枚举常量)
                        |--LOCAL_VARIABLE
                            |--局部变量声明
                        |--METHOD
                            |--方法声明
                        |--PACKAGE
                            |--包声明
                        |--PARAMETER
                            |--参数声明
                        |--TYPE
                            |--类/接口(包括注释类型)或枚举声明
                |--Deprecated
                    |--RetentionPolicy.RUNTIME
                |--Override
                    |--RetentionPolicy.SOURCE
                    |--ElementType.METHOD
                |--SuppressWarmings
                    |--RetentionPolicy.SOURCE
                    |--ElementType.TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE
            |--应用
                |--注释类
                    |--@interface A{}
                |--应用"注释类"的类
                    |--@A
                        ClassB{}
                |--对"应用'注释类'的类"进行反射操作的类
                    |--Class C{
                            B.class.isAnnotationPresent(A.class);
                            A a = B.class.getAnnotation(A.class);
                        }
        |--泛型
        |--类加载器(ClassLoader)
            |--注意
                |--类加载器也是Java类,因为Java类的类加载器本身也要被类加载器加载,显然必须第一个类加载器不是Java类,其就是
                    |--BootStrap不是Java类,由C++语言编写的一段二进制代码,不被JVM所加载,被嵌套JVM内核中,随着JVM的启动而启动
            |--系统默认主要类加载器
                |--BootStrap(JRE/lib/rt.jar)
                    |--ExtClassLoader(JRE/lib/ext/*.jar)
                        |--AppClassLoader(CLASSPATH指定的所有JAR或目录)
            |--委托机制
                |--每个类加载器本身只能分别加载特定位置和目录中的类,它们可以委托其他类加载器对类进行加载
                |--每个类加载器加载类时,会先委托给其上级类加载器
                    |--当所有上级类加载器对类逐级未加载成功,返回至发起者,如果仍无法加载,抛出ClassNotFoundException
        |--代理(Proxy)
            |--代理类的各个方法中通常除了要调用目标的相应方法和对外返回目标的结果外,还可以在代理方法中的四个位置添加系统功能代码
                |--在调用目标方法之前
                |--在调用目标方法之后
                |--在调用目标方法前后
                |--在调用目标方法异常的catch代码快中
        |--线程并发库
            |--需用到共享数据(包括同步锁)或共同算法的若干个方法时,应将其抽取归结在同一个类中,这种设计恰好体现出高类聚和程序的健壮性.
            |--多个线程访问共享对象和数据的方式
                |--如果每条线程执行的代码相同,可以使用同一个Runnable对象,共享数据就是Runnable对象中的数据
                |--如果每条线程执行的代码不同,需要使用不同Runnable对象,有两种方式来实现这些Runnable对象间的数据共享
                    |--将共享数据封装在另一个对象中,然后将这个对象逐一传递给各个Runnable对象,每条线程对共享数据的操作方法也分配给那个对象去完成,以便实现针对该数据进行各个操作的互斥与通信
                    |--将这些Runnable对象作为某个类中的内部类,共享数据作为这个外部类中的成员变量,每个线程对共享数据的操作方法也分配给外部类,以便实现针对该数据进行各个操作的互斥与通信,作为内部类的各个Runnable对象调用外部类的方法
                    |--总结:将共享数据封装在另一个对象中,每个线程对共享数据的操作方法也分配给那个对象去完成,对象作为外部类中的成员变量或方法中的局部变量,每条线程的Runnable对象作为外部类中的成员内部类或局部内部类

原创粉丝点击